C/C++ 예제

시삽: 레드플러스 님 
게시판 이동:
 제목 : 13.6.1 해시테이블(Hashtable)
글번호: 260
작성자: 레드플러스
작성일: 2006/05/03 오전 10:23:59
조회수: 4709
1/* 2해시테이블(Hashtable) : 3 배열의 인덱스값을 사용하지 않고, 4 문자열의 키값을 사용하여 데이터 입력과 출력을 할 수 있는 구조 5*/ 6#include <stdio.h> 7#include <string.h> 8 9#define TableSize 1000 10#define ModSize 1000 11 12int Hashtable(char *); 13 14// 간단한 이름과 전화번호를 저장하는 구조체 15struct PhoneAddress 16{ 17 char Name[25]; // 이름 필드 18 char Phone[15]; // 전화번호 필드 19}mobile[TableSize]; 20 21void main(void) 22{ 23 int n; 24 int i = 0; 25 char name[25], phone[15]; 26 27 printf("이름(영문대문자) 전화번호\n"); 28 for (i = 0;i < 3;i++) 29 { 30 scanf("%s %s", name, phone); 31 n = Hashtable(name); // 해시테이블로부터 인덱스 받아오기 32 strcpy(mobile[n].Name, name); 33 strcpy(mobile[n].Phone, phone); 34 } 35 36 //rewind(stdin); 37 printf("검색할 데이터를 입력하세요.\n"); 38 for (i = 0;i < 3;i++) 39 { 40 scanf("%s", name); 41 n = Hashtable(name); // 해시테이블로부터 인덱스 받아오기 42 printf("%25s %15s\n", mobile[n].Name, mobile[n].Phone); 43 } 44} 45 46// 해시 알고리즘을 사용하여 해시 데이터 만들기 47int Hashtable(char *s) 48{ 49 int n; 50 51 n = strlen(s); 52 return 53 (s[0] - 'A' + (s[n/2-1]-'A') * 26 + (s[n-2]-'A')*26*26) 54 % ModSize; 55} 56 57/* 58이름 전화번호 59NN 111 60BB 222 61CC 333 62검색할 데이터를 입력하세요. 63BB 64 BB 222 65CC 66 CC 333 67NN 68 NN 111 69계속하려면 아무 키나 누르십시오 . . . 70*/
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 14. 기타 - 레드플러스 2005-07-26 4784
  13. 데이터 구조(자료 구조) - 레드플러스 2005-07-26 5270
  13.1. 스택(Stack) - 레드플러스 2005-12-07 3622
  13.1.1. 스택(Stack) - 레드플러스 2005-12-07 3798
  스택 및 큐에 대한 설명한 엑셀 파일(강의용) 스택큐설명.xls(15 KB) 레드플러스 2007-01-23 3827
  13.2. 큐(Queue) - 레드플러스 2005-12-07 3575
  13.2.1. 큐(Queue) - 레드플러스 2005-12-07 4065
  13.2.1.1. 큐(Queue)에 대해 설명할 때 사용한 엑셀 파일 스택큐설명2.xls(15 KB) 레드플러스 2007-01-25 3653
  13.3. 리스트(List) - 레드플러스 2005-12-07 3760
  13.3.1. 리스트(List) : LIFO형 리스트 - 레드플러스 2005-12-07 3730
  13.3.1.1. 리스트(List) : LIFO형 리스트 설명시 사용했던 엑셀 파일 리스트(LIFO)설명.xls(13 KB) 레드플러스 2007-01-26 3639
  13.3.2. 리스트(List) : FIFO형 리스트 - 레드플러스 2005-12-07 4053
  13.3.2.1. 리스트(List) : FIFO형 리스트 설명시 사용했던 엑셀 파일 리스트(FIFO)설명.xls(13 KB) 레드플러스 2007-01-26 3670
  13.3.3. 리스트(List) 입력 - 레드플러스 2005-12-08 3801
  13.3.4. 리스트(List) 삭제 - 레드플러스 2005-12-08 3640
  13.3.5. 이중 연결 리스트(Doubly Linked List) - 레드플러스 2005-12-08 6927
  13.3.6. 이중 연결 리스트 간단한 설명 : 이중연결리스트간단한설명.c - 레드플러스 2007-01-24 4724
  13.3.6. 이중 연결 리스트 간단한 설명시 사용했던 엑셀 파일 이중연결링크드리스트설명.xls(13 KB) 레드플러스 2007-01-24 3886
  13.4. 트리(Tree) - 레드플러스 2006-05-01 3623
  13.4.1. 이진 탐색 트리 - 레드플러스 2006-05-01 3925
  13.4.1.1. 이진 탐색 트리 설명시 사용했던 엑셀 파일 트리설명.xls(17 KB) 레드플러스 2007-01-25 3797
  13.5. 그래프(Graph) - 레드플러스 2006-05-02 3559
  13.5.1 그래프(Graph) - 레드플러스 2006-05-02 3581
  13.5.1.1 그래프(Graph) 설명시 사용했던 엑셀 파일 그래프설명.xls(15 KB) 레드플러스 2007-01-25 3771
  13.6. 해시테이블(Hashtable) - 레드플러스 2006-05-03 3743
현재글 13.6.1 해시테이블(Hashtable) - 레드플러스 2006-05-03 4709
  데이터 구조 종합 예제 : 주소록 프로그램 종합예제_주소록프로그램.c(9 KB) 레드플러스 2006-11-02 4260
다음글 12. 메모리 관리 - 레드플러스 2005-07-26 5080
 
손님 사용자 Anonymous (손님)
로그인 Home