📄 符号匹配问题.cpp
字号:
// 符号匹配问题.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define MAX 100
//顺序栈
typedef struct {
char data[MAX];
int top;
}seqstack;
void initStack(seqstack *s){ //初始化空栈
s->top=0;
}
bool empty(seqstack *s){ //判空栈函数,若S为空栈,则函数值为“真”或为1,否则为“假”或为0
if (s->top==0)
return 1;
else
return 0;
}
void push(seqstack *s,char e){ //进栈操作,在S栈顶插入一个元素e,进栈操作又称插入、压栈
if(s->top == MAX - 1)
printf("OverFlow!\n");
else{
s->data[s->top]=e;
s->top++;
}
}
char pop(seqstack *s){ //出栈操作,在S栈顶删除一个元素,出栈操作又称删除、弹栈
if(empty(s))
{
printf("UnderFlow!\n");
return 0;
exit(0);
}
else{
s->top--;
return s->data[s->top];
}
}
char GetTop(seqstack *s){ //取栈顶元素操作
if(empty(s)){
printf("Stack is empty.\n");
return 0;
exit(0);
}
else{
int top;
top=s->top;
return s->data[--top];
}
}
void clear(seqstack *s){ //栈置空操作
int i=0;
while(i<100){
s->data[i]=' ';
i++;
}
}
char CurrentSize(seqstack *s){ //求当前栈中元素个数的函数
return s->top;
}
void main(){
FILE *fpin,*fpout;
int count=1;
seqstack *ss;
ss=(seqstack *)malloc(sizeof(seqstack));
initStack(ss);
if ((fpin=fopen("in.txt","r"))==NULL){
printf("Can't open the in.txt file!\n");
exit(0);
}
if((fpout=fopen("out.txt","w"))==NULL){
printf("Can't open the out.txt file!\n");
exit(0);
}
char *p;
p=(char *)malloc(100);
while(!feof(fpin)){
fscanf(fpin,"%s",p);
fprintf(fpout,"第%d条表达式的匹配情况:\n",count);
while(*p!='\0'){
switch(*p){
case '(':
push(ss,*p);
break;
case '[':
push(ss,*p);
break;
case '{':
push(ss,*p);
break;
case ')':
if(GetTop(ss)=='('){
fprintf(fpout,"栈顶元素%c与所读元素%c匹配\n",pop(ss),*p);
break;
}
else{
fprintf(fpout,"符号不匹配!\n");
exit(0);
}
case ']':
if(GetTop(ss)=='['){
fprintf(fpout,"栈顶元素%c与所读元素%c匹配\n",pop(ss),*p);
break;
}
else{
fprintf(fpout,"符号不匹配!\n");
exit(0);
}
case '}':
if(GetTop(ss)=='{'){
fprintf(fpout,"栈顶元素%c与所读元素%c匹配\n",pop(ss),*p);
break;
}
else{
fprintf(fpout,"符号不匹配!\n");
exit(0);
}
}
p++;
}
if(empty(ss))
fprintf(fpout,"符号匹配成功!\n");
else fprintf(fpout,"符号匹配不成功!\n");
count++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -