1. 程式人生 > >順序棧的置空入棧出棧和返回棧頂元素

順序棧的置空入棧出棧和返回棧頂元素

#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 100
#define OK 1
#define FALSE 0
//順序棧結構體
typedef struct stack{
int data[MAXSIZE];
int top;
}*pstack, stack;


//置空順序棧
int empty(pstack sq){
sq->top = -1;
printf("順序棧已經置空!\n");
return OK;
}


//入棧操作
int push(pstack sq){
int x;
printf("請輸入你想要入棧的資料:\n");
scanf("%d",&x);
sq->top = ++sq->top;
sq->data[sq->top]=x;

return OK;
}


//出棧操作
int pop(pstack sq){
if (sq->top == -1)
{
printf("順序棧已經為空!\n");
return FALSE;
}
else
{
printf("出棧資料是:%d\n", sq->data[sq->top]);
sq->top = --sq->top;
return OK;
}
}


//遍歷順序棧中的所有資料
int show(pstack sq){
int i;
if (sq->top == -1)
{
printf("這是個空棧!\n");
return FALSE;
}
else
{
printf("棧中的元素為:\n");
for (i = 0; i <= sq->top; i++)
{
printf("%d ", sq->data[i]);
}
}
printf("\n");
}


//返回順序棧棧頂元素
int getstacktop(pstack sq){
if (sq->top == -1)
{
printf("順序棧中元素為空!\n");
return FALSE;
}
else
    {
printf("棧頂元素是:%d\n", sq->data[sq->top]);
return OK;
}
}
int main()
{
stack S;
int n;
do{
printf("*******************\n");
printf("1.置空順序棧\n2.進棧操作\n3.出棧操作\n4.順序輸出棧中元素\n5.返回棧頂元素\n6.退出程式\n");
printf("*******************\n");
printf("請輸入你的選擇:\n");
scanf("%d",&n);
switch (n){
case 1:
empty(&S);
break;
case 2:
push(&S);
break;
case 3:
pop(&S);
break;
case 4:
show(&S);
break;
case 5:
getstacktop(&S);
break;
case 6:
break;
}
} while (n!=6);
return 0;
}