반응형
전화 번호부를 연결 리스트를 이용하여 만들어보자. 사용자가 전화 번호를 입력하면 연결리스트의 끝에 추가한다. 탐색 기능도 추가하라.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | #include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 30 typedef struct NODE { char name[SIZE]; char num[SIZE]; struct NODE *link; }NODE; int menu(); void initialize(NODE **list, NODE **next); void add(NODE **list, NODE **prev); void search(NODE **next, NODE **list); void exit1(NODE **next, NODE **list); int main(void) { NODE *list = NULL; NODE *prev, *next; int men = 0; prev = NULL; next = NULL; while ((men = menu()) != 4) { getchar(); if (men == 1) { initialize(&list, &next); } else if (men == 2) { add(&list, &prev); } else if (men == 3) { search(&next, &list); } } exit1(&next, &list); return 0; } int menu() { int a = 0; printf("연결 리스트를 이용한 전화 번호부 메뉴\n"); printf("-------------------------\n"); printf("1. 초기화\n"); printf("2. 전화 번호 추가\n"); printf("3. 전화 번호 탐색\n"); printf("4. 종료\n"); printf("-------------------------\n"); scanf("%d", &a); return a; } void initialize(NODE **list, NODE **next) { NODE *p; p = *list; while (p != NULL) { *next = p->link; free(p); p = *next; } printf("초기화가 완료되었습니다.\n"); } void add(NODE **list, NODE **prev) { NODE *p; p = (NODE*)malloc(sizeof(NODE)); printf("이름: "); gets(p->name); printf("번호: "); gets(p->num); if (*list == NULL) { *list = p; } else { (*prev)->link = p; } p->link = NULL; *prev = p; } void search(NODE **next, NODE **list) { NODE *p; char nam[SIZE]; printf("찾을 이름: "); gets(nam); p = *list; while (p != NULL) { *next = p->link; if (strcmp(p->name, nam) == 0) { printf("전화 번호는 %s입니다.\n", p->num); break; } p = *next; } } void exit1(NODE **next, NODE **list) { NODE *p; p = *list; while (p != NULL) { *next = p->link; free(p); p = *next; } } | cs |
반응형
'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글
영화 목록 만들기 (2) | 2017.02.25 |
---|---|
양의 정수 저장 (0) | 2017.02.22 |
단어 입력 받기 (0) | 2017.02.21 |
주소록 저장 (0) | 2017.02.21 |
문자열 동적 메모리 (0) | 2017.02.21 |