Data_Structure/資料結構光碟檔/CH03/circularQueue.c.txt

103 lines
2.4 KiB
Plaintext
Raw Normal View History

2025-01-20 21:25:33 +08:00
/* file name: circularQueue.c */
/* <20>ϥ<EFBFBD><CFA5><EFBFBD><EFBFBD>Φ<EFBFBD><CEA6>C<EFBFBD>B<EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD>--<2D>s<EFBFBD>W<EFBFBD>B<EFBFBD>R<EFBFBD><52><EFBFBD>B<EFBFBD><42><EFBFBD>X */
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#define MAX 10
void enqueue_f(void); /* <20>s<EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD> */
void dequeue_f(void); /* <20>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
void list_f(void); /* <20><><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD> */
void flushBuffer(void); /* <20>M<EFBFBD>Žw<C5BD>İ<EFBFBD> */
char item[MAX][20];
int front = MAX-1, rear = MAX-1, tag = 0;
/* TAG<41><47><EFBFBD>O<EFBFBD><4F>FRONT<4E>Ҧb<D2A6>O<EFBFBD>_<EFBFBD><5F><EFBFBD>x<EFBFBD>s<EFBFBD><73><EFBFBD>ơA
0<>ɬ<EFBFBD><C9AC>S<EFBFBD><53><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>ơA1<41>ɬ<EFBFBD><C9AC><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
int main(void)
{
char option;
while(1) {
printf("\n ******************\n");
printf(" <1> insert\n");
printf(" <2> delete\n");
printf(" <3> list\n");
printf(" <4> quit\n");
printf(" ******************\n");
printf(" <20>п<EFBFBD><D0BF>J<EFBFBD>ﶵ: ");
option = getchar();
flushBuffer();
switch (option) {
case '1':
enqueue_f();
break;
case '2':
dequeue_f();
break;
case '3':
list_f();
break;
case '4':
printf(" <20>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
exit(0);
default:
printf("\n <20><EFBFBD><EFB6B5><EFBFBD>~!\n <20>п<EFBFBD><D0BF>J 1, 2, 3, <20><> 4\n");
}
}
}
void enqueue_f()
{
if (front == rear && tag == 1) /* <20><><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>w<EFBFBD><77><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>ܿ<EFBFBD><DCBF>~ */
printf("\n\n <20><><EFBFBD>C<EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD> !\n");
else {
rear = (rear + 1) % MAX;
printf("\n <20>п<EFBFBD><D0BF>J<EFBFBD>@<40>r<EFBFBD><72>: ");
scanf("%s", item[rear]);
flushBuffer();
if (front == rear)
tag = 1;
}
}
void dequeue_f()
{
if (front == rear && tag == 0) /* <20><><EFBFBD><EFBFBD><EFBFBD>ƨS<C6A8><53><EFBFBD><EFBFBD><EFBFBD>Ʀs<C6A6>b<EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>ܿ<EFBFBD><DCBF>~ */
printf("\n <20><><EFBFBD>C<EFBFBD>O<EFBFBD>Ū<EFBFBD>!\n");
else {
front = (front + 1) % MAX;
printf("\n %s <20>w<EFBFBD>Q<EFBFBD>R<EFBFBD><52>\n", item[front]);
if (front == rear)
tag = 0;
}
}
void list_f()
{
int count = 0, i, num;
if (front == rear && tag == 0)
printf("\n <20><><EFBFBD>C<EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD>\n");
else {
printf("\n <20><><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>Ʀp<C6A6>U: \n");
printf(" ------------------\n");
i = (front + 1) % MAX;
while (i != rear) {
printf(" %-20s\n", item[i]);
num = ++i % MAX;
i = num;
count++;
}
printf(" %-20s\n", item[i]);
printf(" ------------------\n");
printf(" <20>@<40><> %d <20>Ӧr<D3A6><72>\n", ++count);
}
}
void flushBuffer()
{
while (getchar() != '\n')
continue;
}