반응형

전화 번호부를 연결 리스트를 이용하여 만들어보자. 사용자가 전화 번호를 입력하면 연결리스트의 끝에 추가한다. 탐색 기능도 추가하라.


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

+ Recent posts