103 lines
2.4 KiB
Plaintext
103 lines
2.4 KiB
Plaintext
|
/* 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;
|
|||
|
}
|