📄 stack1.cpp
字号:
#include<stdio.h>
#include"math.h"
#include"string.h"
#include"ctype.h"
#define sqStackSize 15
typedef char dataType;
typedef struct sqStack{
dataType data[sqStackSize];
int top;
}sqStackTp;
char ch,chs,e,f='T';
void InitStack(sqStackTp *sq){sq->top=-1;}
int StackEmpty(sqStackTp *sq){return sq->top==-1;}
int StackFull(sqStackTp *sq){return sq->top==sqStackSize-1;}
char push(sqStackTp *sq,dataType x){
if(StackFull(sq)){printf("%s\n","Stack overflow!");return 'O';}
else {sq->data[++sq->top]=x;return 'T';}
}
char pop(sqStackTp *sq,dataType &e){
if(StackEmpty(sq)){printf("%s\n","Stack undowflow!");return 'U';}
else {sq->data[sq->top]=' ';e=sq->data[sq->top--];return 'T';}
}
char gettop(sqStackTp *sq,dataType &e){
if(StackEmpty(sq)){printf("%s\n","Stack is empty!");return 'E';}
else {e=sq->data[sq->top];return 'T';}
}
void main(){
sqStackTp *ssq;
int f=0;
InitStack(ssq);
char ch=getchar();
while (ch!='#'){
switch(ch){
case'(':;
case'[':f=push(ssq,ch);break;
case')':;
case']':{f=gettop(ssq,chs);
if(f='T'&&(chs=='('&&ch==')'||chs=='['&&ch==']')) f=pop(ssq,e);
else {f='C';printf("%s\n\n","ERROR!");}
break;}
default:f='T';
}//end switch
printf("%s%s,%s%d\n\n","输入:",&f," 栈顶:",ssq->top);
if(f!='T')break;
else {scanf("%s",&ch);}
}//end while
printf("%s,%d,%s%s\n%s",&f,ssq->top,"括号配对",(f=='T'&&ssq->top==-1)?"正确":"错误","空格键+回车=退出!");
ch=getchar();
while (ch!=' ') ch=getchar();
}//end main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -