📄 栈作业(徐何).cpp
字号:
#include<stdio.h>
#include<stdlib.h>
#define FALSE 0
#define TRUE 1
#define M 2
typedef struct
{
int Stack[M];
int top;
}DqStack;
void InitStack(DqStack *S);
int push(DqStack *S,int x);
int Pop(DqStack *S,int *x);
int GetTop(DqStack *S,int *x);
int i,x;
void main()
{
DqStack S;
int c,z;
int flag;
InitStack(&S);
do{
printf("初始化请按1\n");
printf("进栈操作请按2\n");
printf("出栈操作请按3\n");
printf("取栈顶元素请按4\n");
printf("退出请按5\n");
scanf("%d",&c);
putchar('\n');
switch(c)
{
case 1:
InitStack(&S);
break;
case 2:
printf("请输入要进栈的元素x:");
scanf("%d",&x);
flag=push(&S,x);
if(!flag)
printf("********* error,入栈失败,栈已满");
putchar('\n');
break;
case 3:
flag=Pop(&S,&z);
if(flag)
printf("出栈的元素为:%d",z);
else
printf("********* error,栈已空");
putchar('\n');
putchar('\n');
break;
case 4:
flag=GetTop(&S,&z);
if(flag)
printf("栈顶的元素为:%d",z);
else
printf("********* error,栈已空");
default:
putchar('\n');
putchar('\n');
break;
}
}while(c!=5);
printf("*\n");
}
void InitStack(DqStack *S)
//初始化栈
{
S->top=-1;
}
int push(DqStack *S,int x)
//进栈操作
{
if(S->top==M-1)//判断是否栈满
return(FALSE);
S->top++;
S->Stack[S->top]=x;
return(TRUE);
}
int Pop(DqStack *S,int *x)
//出栈操作
{
if(S->top==-1) //判断是否栈空
return(FALSE);
*x=S->Stack[S->top];
S->top--;
return(TRUE);
}
int GetTop(DqStack *S,int *x)
//取栈顶元素
{
if(S->top==-1)
return(FALSE);
*x=S->Stack[S->top];
return(TRUE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -