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

95 lines
2.0 KiB
Plaintext
Raw Normal View History

2025-01-20 21:25:33 +08:00
/* file name : stack.c */
/* <20>ϥΰ<CFA5><CEB0>|<7C>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 push_f(void); /* <20>s<EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD> */
void pop_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 top = -1;
int main()
{
char option;
while (1) {
printf("\n ************************\n");
printf(" <1> insert (push)\n");
printf(" <2> delete (pop)\n");
printf(" <3> list\n");
printf(" <4> quit\n");
printf(" ************************\n");
printf(" <20>п<EFBFBD><D0BF>J<EFBFBD>ﶵ: ");
option = getchar();
flushBuffer();
switch (option) {
case '1':
push_f();
break;
case '2':
pop_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");
}
}
return 0;
}
void push_f(void)
{
if (top >= MAX-1) /* <20><><EFBFBD><EFBFBD><EFBFBD>|<7C>w<EFBFBD><77><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>ܿ<EFBFBD><DCBF>~ */
printf("\n <20><><EFBFBD>|<7C>O<EFBFBD><4F><EFBFBD><EFBFBD>!\n");
else {
top++;
printf("\n <20>п<EFBFBD><D0BF>J<EFBFBD>@<40>r<EFBFBD><72>: ");
scanf("%s", item[top]);
flushBuffer();
}
}
void pop_f(void)
{
if (top < 0) /* <20><><EFBFBD><EFBFBD><EFBFBD>|<7C>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>Ʀs<C6A6>b<EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>ܿ<EFBFBD><DCBF>~ */
printf("\n <20><><EFBFBD>|<7C>O<EFBFBD>Ū<EFBFBD>!\n");
else {
printf("\n %s <20>w<EFBFBD>Q<EFBFBD>R<EFBFBD><52>\n", item[top]);
top--;
}
}
void list_f(void)
{
int count = 0, i;
if (top < 0)
printf("\n\n <20><><EFBFBD>|<7C>L<EFBFBD><4C><EFBFBD><EFBFBD>\n");
else {
printf("\n\n <20><><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD>Ʀp<C6A6>U: \n");
printf(" ------------------\n");
for (i = top; i >= 0; i--) {
printf(" %-20s\n", item[i]);
count++;
}
printf(" ------------------\n");
printf(" <20>@<40><>: %d <20>r<EFBFBD><72>\n", count);
}
}
void flushBuffer()
{
while (getchar() != '\n')
continue;
}