More actions
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 | 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 | ||
| Line 99: | Line 99: | ||
---- | ---- | ||
[[ProjectGaia]] | [[ProjectGaia]] | ||
Latest revision as of 00:29, 27 March 2026
규모
목표 : 스펙 기본 사항 만족
=== 키 순차 화일, 확장 해쉬 파일 ===
- 화일 생성
- 레코드 입력
- 레코드 검색
- 임의 레코드 검색 ( 레코드 검색시 소요시간 측정)
- 임의 레코드 삽입 ( 레코드 삽입 시간 측정 )
- 임의 레코드 삭제
- 편리한 사용자 인터페이스
자료구조
=== 키 순차 화일 ===
- 페이지 구조
- 페이지 정보를 갖는 페이지 헤더
- 페이지 ID
- 저장된 레코드에 대한 레코드 정의 필드(레코드 개수 등)
- 추가 삽입을 위한 자유공간
- 실제 데이타 정보(레코드 또는 버켓)를 저장하는 사용자 공간
- 레코드 정의 필드
- 페이지 정보를 갖는 페이지 헤더
=== 확장 해쉬 파일 ===
- 버켓 크기 : 8
- 디렉토리 구조
- 초기 디렉토리 헤더값 : 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