📄 seqstack.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int top;
}SeqStack;
SeqStack SeqStackInit()
{
SeqStack s;
s.top=-1;
return s;
}
int SeqStackEmpty(SeqStack s)
{
if (s.top==-1)
{
return true;
}
else
return false;
}
SeqStack SeqStackPush(SeqStack s,int x)//b
{
if (s.top==MAXSIZE-1)
{
printf("栈满!\n");
// exit(0);
}
else
{
s.top++;
s.data[s.top]=x;
}
return s;
}
SeqStack SeqStackPop(SeqStack s)
{
int x;
if (s.top==-1)
{
printf("栈空!\n");
exit(0);
}
x=s.data[s.top];
printf("出栈元素:%d\n",x);
s.top--;
return s;
}
int SeqStackGetTop(SeqStack s)
{
if (s.top!=-1)
{
return (s.data[s.top]);
}
else
return 0;
}
void SeqStackDisplay(SeqStack s)
{
if (s.top==-1)
{
printf("栈空!\n");
}
else
{
while (s.top!=-1)
{
printf("%d->",s.data[s.top]);
s.top--;
}
}
}
int main()
{
SeqStack s;
int n;
int i,seq,sel;
int pu,getop;
int flag=1;
char ch;
s=SeqStackInit();
printf("请输入栈的长度:");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("请输入一整数:");
scanf("%d",&seq);
s=SeqStackPush(s,seq);
// SeqStackDisplay(s);
}
printf("\n");
SeqStackDisplay(s);
while (flag)
{
printf("select 1:SeqStackDisplay()\n");
printf("select 2:SeqStackPush()\n");
printf("select 3:SeqStackPop()\n");
printf("select 4:SeqStackGetTop()\n");
printf("请选择1--4:");
scanf("%d",&sel);
switch(sel)
{
case 1:
printf("栈元素:");
SeqStackDisplay(s);
break;
case 2:
printf("请输入一个整数:");
scanf("%d",&pu);
printf("\n");
s=SeqStackPush(s,pu);
SeqStackDisplay(s);
break;
case 3:
s=SeqStackPop(s);
// printf("出栈元素:%d\n",po);
SeqStackDisplay(s);
break;
case 4:
getop=SeqStackGetTop(s);
printf("栈顶元素:%d\n",getop);
SeqStackDisplay(s);
break;
}
printf("继续操作(Y|N)");
getchar();
ch=getchar();
if ((ch=='n')||(ch=='N'))
flag=0;
else
flag=1;
}
//栈的应用 将整数转换成二进制,八进制,等
/*
s=SeqStackInit();
int N;
scanf("%d",&N);
while(N!=0)
{
s=SeqStackPush(s,N%2);
N=N/2;
}
int e;
while (!SeqStackEmpty(s))
{
s=SeqStackPop(s);
// printf("%d->",e);
}
*/
/*
//栈的应用 表达式中括号匹配的检查
s=SeqStackInit();
char c;
while ((ch=getchar())!='#')
{
switch(ch)
{
case '(': s=SeqStackPush(s,ch);break;
case ')': if (SeqStackEmpty(s)||(c=SeqStackGetTop(s))!='(')
{
printf("括号不匹配");
}
else
s=SeqStackPop(s);
break;
case '[': s=SeqStackPush(s,ch);break;
case ']': if (SeqStackEmpty(s)||(c=SeqStackGetTop(s))!='(')
{
printf(" 中括号不匹配");
}
else
s=SeqStackPop(s);
break;
case '{': s=SeqStackPush(s,ch);break;
case '}': if (SeqStackEmpty(s)||(c=SeqStackGetTop(s))!='(')
{
printf(" 大括号不匹配");
}
else
s=SeqStackPop(s);
break;
}
}
if(SeqStackEmpty(s))
printf("括号匹配成功");
else
printf("括号不匹配成功");
*/
/*
//栈的应用 表达式求值
SeqStack optr,opnd;
char ch;
optr=SeqStackInit();//运算符栈初始化
optr=SeqStackPush(,'#');//'#'置于栈底,级别最低
opnd=SeqStackInit();//操作数栈初始化
// scanf("%c",&ch);//读入表达式,以'#'结束
while (!(((ch=getchar())=='#')&&(SeqStackGetTop(optr)=='#')))
{
if (ch>='0' && ch<='9')
{
SeqStackPush(optr,ch);
}
else
switch()
{
}
}
*/
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -