95 lines
2.0 KiB
Plaintext
95 lines
2.0 KiB
Plaintext
|
/* 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;
|
|||
|
}
|