#include<stdio.h>
#include <stdlib.h>
#define Stack_Size 50
#define TRUE 1
#define FALSE 0
typedef char StackElementType;
typedef struct
{
StackElementType elem[Stack_Size]; //存放栈中元素的一维数组
int top; //存放栈顶元素下标 -1表示空栈
}SeqStack;
//初始化
void InitStack(SeqStack * S)
{
S->top=-1;
}
//进栈
int Push(SeqStack * S,StackElementType x)
{
if(S->top==Stack_Size-1) return TRUE; //printf("栈已经满啦!")
S->top++;
S->elem[S->top]=x;
return FALSE; //printf("成功入栈!\n")
}
//出栈
int Pop(SeqStack * S,StackElementType x)
{
if(S->top==-1)
return(FALSE);
else
{
x=S->elem[S->top];
S->top--;
return (TRUE);
}
}
//获取栈顶元素
int GetTop(SeqStack * S,StackElementType *x)
{
if(S->top==-1)
return(FALSE);
else
{
*x=S->elem[S->top];
S->top--;
return (TRUE);
}
}
void output(SeqStack * S)
{
int i;
printf("现在栈里面的元素有:");
for(i=S->top;i>=0;i--)
{
printf("%c ",S->elem[i]);
}
}
void main ()
{
SeqStack S,p;
char q;
int choose,cycle=1,i,e;
InitStack (&S);
printf("已初始化栈!\n");
system("color 2F");
while(cycle){
printf("请输入要执行的操作:\n");
printf("\t-----------------------------------------\n");
printf("\t|\t1. 入栈 \t\t\t|\n");
printf("\t-----------------------------------------\n");
printf("\t|\t2. 出栈 \t\t\t|\n");
printf("\t-----------------------------------------\n");
printf("\t|\t3. 输出 \t\t\t|\n");
printf("\t-----------------------------------------\n");
printf("\t|\t4. 退出 \t\t\t|\n");
printf("\t-----------------------------------------\n");
//choose =getch();
scanf("%d",&choose);
switch (choose)
{
case 1://入栈
printf("请输入入栈个数:");
scanf("%d",&e);
printf("请输入入栈元素:");
for(i=0;i<=e;i++)
{
scanf("%c,",&q);
Push (&S,q);
}
output(&S);
system("pause");
break;
case 2://出栈
Pop(&S,q);
printf("出栈啦:");
output(&S);
system("pause");
break;
case 3://输出栈元素
output(&S);
system("pause");
break;
case 4:
cycle=0;
printf("RZH欢迎您再次使用:\n");
break;
default :
printf("输入有误,欢迎您再次使用:\n");
cycle=0;
}
}
}
数据结构——栈的基本操作(顺序栈)
最新推荐文章于 2022-05-07 17:27:38 发布