Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

ProjectGaia/중간발표: Difference between revisions

From ZeroWiki
imported>Unknown
No edit summary
 
(Repair batch-0003 pages from live compare)
 
Line 28: Line 28:
  // 둘중 택일해야 할 상호아
  // 둘중 택일해야 할 상호아
  struct Data{
  struct Data{
  char column1[];
  char column1[];
  char column2[];
  char column2[];
  char column3[];
  char column3[];
  }
  }
   
   
Line 54: Line 54:
  typedef struct {
  typedef struct {
  int preBits = 3 // header;
  int preBits = 3 // header;
  unsigned int leafs[8] // pointer;
  unsigned int leafs[8] // pointer;
  }DIRECTORY;
  }DIRECTORY;
   
   
Line 61: Line 61:
  unsigned int pseudokey // header;
  unsigned int pseudokey // header;
  unsigned int numOfBucket;
  unsigned int numOfBucket;
  unsigned int bucket[];
  unsigned int bucket[];
  }LEAF;
  }LEAF;
   
   
Line 93: Line 93:
   
   
  close_h(f);
  close_h(f);
정말 감을;; --[[neocoin]]
정말 감을;; --neocoin




Line 99: Line 99:
----
----
[[ProjectGaia]]
[[ProjectGaia]]

Latest revision as of 00:29, 27 March 2026

규모

목표 : 스펙 기본 사항 만족

=== 키 순차 화일, 확장 해쉬 파일 ===
    1. 화일 생성
    • 레코드 입력
    • 레코드 검색
    • 임의 레코드 검색 ( 레코드 검색시 소요시간 측정)
    • 임의 레코드 삽입 ( 레코드 삽입 시간 측정 )
    • 임의 레코드 삭제
    • 편리한 사용자 인터페이스

자료구조

=== 키 순차 화일 ===
    1. 페이지 구조
    • 페이지 정보를 갖는 페이지 헤더
      • 페이지 ID
      • 저장된 레코드에 대한 레코드 정의 필드(레코드 개수 등)
      • 추가 삽입을 위한 자유공간
    • 실제 데이타 정보(레코드 또는 버켓)를 저장하는 사용자 공간
      • 레코드 정의 필드
=== 확장 해쉬 파일 ===
    1. 버켓 크기 : 8
    2. 디렉토리 구조
    • 초기 디렉토리 헤더값 : 8
    • 인덱스와 리프를 가리키는 포인터로 구성
// 둘중 택일해야 할 상호아
struct Data{
	char column1[];
	char column2[];
	char column3[];
}

struct Record{
	int key; // field1
	Data* data; // field2
}


struct Record{
	int key;
	char* field1;
	char* field2;
	char* field3;
}

API 설계

  • parameter 기술

(확장)해쉬함수 관리

  • pseudo code 작성


typedef struct {
	int preBits = 3 // header;
	unsigned int leafs[8]	// pointer;
}DIRECTORY;


typedef struct{
	unsigned int pseudokey // header;
	unsigned int numOfBucket;
	unsigned int bucket[];
}LEAF;


FILE create_h(char* fileName);	// 새로운 해쉬 구조 생성
void open_h(FILE fileHandle, unsigned int psedoKey);		// 기존 해쉬 구조 열기
void close_h(FILE f);		// 해쉬 구조 닫기
void insert_h();	// 해쉬 값 넣기
void retrieve_h(FILE f, unsigned int pseudoKey);	// 검색하기
void delete_h();	// 해쉬지우기


/* pseudo code */

File f = create_h("Test");

FILE f = open_h("fileName.dot", pseudoKey );

unsigned realKey = 10;
char* data = "ThisIsATest";

unsigned int pseudoKey = hash_func_h(realKey);

insert( f, pseudoKey, data );

char* pRetrieved_data = retrieve_h(f, pseudoKey );

prinf("%s", pRetrieved_data );

free(data);

close_h(f);

정말 감을;; --neocoin



ProjectGaia