들어가기 전에
■∥ 작성조건
1. 프로그램 메뉴 : 서비스 요청 등록(큐 삽입) / 대기번호 출력 / 서비스 처리(큐 삭제)
2. 서비스 요청 등록의 고객 입력 사항 : 이름, 전화번호, 서비스 요청 품목
■∥ 문제 출제 : C로 배우는 쉬운 자료구조(한빛아카데미)
코드
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 |
#include <stdio.h>
#include <malloc.h>
#pragma warning(disable:4996)
typedef char element;
typedef struct Qnode {
element Name[15];
element Phone[18];
element Product[40];
struct Qnode *link;
} Qnode;
typedef struct {
Qnode *front, *rear;
} LQueueType;
LQueueType *createLinkedQueue() {
LQueueType *LQ;
LQ = (LQueueType *)malloc(sizeof(LQueueType));
LQ->front = NULL;
LQ->rear = NULL;
return LQ;
}
int isEmpty(LQueueType *LQ) {
if (LQ->front == NULL) {
printf("\n 서비스 요청을 등록한 고객님이 없습니다. \n");
return 1;
}
else return 0;
}
void enQueue(LQueueType *LQ) {
Qnode *newNode = (Qnode *)malloc(sizeof(Qnode));
printf("이름 : ");
gets(newNode->Name);
printf("전화번호 : ");
gets(newNode->Phone);
printf("수리품목 : ");
gets(newNode->Product);
newNode->link = NULL;
printf("\n등록되었습니다.\n");
if (LQ->front == NULL) {
LQ->front = newNode;
LQ->rear = newNode;
}
else {
LQ->rear->link = newNode;
LQ->rear = newNode;
}
}
element deQueue(LQueueType *LQ) {
Qnode *old = LQ->front;
if (isEmpty(LQ)) return 0;
else {
LQ->front = LQ->front->link;
if (LQ->front == NULL)
LQ->rear = NULL;
printf("\n%s고객님의 서비스가 처리되었습니다.\n", old->Name);
free(old);
return 1;
}
}
void printLQ(LQueueType *LQ) {
int i = 1;
Qnode *temp = LQ->front;
printf("\n 대기번호\n");
while (temp){
printf(" %d번, %s 고객님 %s서비스 요청\n", i, temp->Name, temp->Product);
temp = temp->link;
i++;
}
}
void main(){
LQueueType *LQ1 = createLinkedQueue();
int choice;
do {
printf("\n\n|서비스 센터 프로그램|\n");
printf("(1) 서비스 요청 등록\n");
printf("(2) 대기번호 출력\n");
printf("(3) 서비스 처리\n");
printf("(4) 종료\n");
printf("\n\n 무엇을 도와드릴까요? ");
choice = getchar();
fflush(stdin);
switch (choice) {
case '1':
printf("\n서비스 요청 등록입니다.\n");
enQueue(LQ1);
break;
case '2':
printf("\n현재 대기번호 목록입니다.\n");
printLQ(LQ1);
break;
case '3':
deQueue(LQ1);
break;
case '4':
printf("\n종료합니다.\n");
break;
default:
printf("\n잘못된 값을 입력하였습니다.\n");
}
} while (choice != '4');
} |
출력 결과