📄 2.c
字号:
#define OK 1
#define OVERFLOW -2
#define ERROR 0
#include <stdlib.h>
#include <stdio.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 100
typedef struct {
char *base;
char *top;
int stacksize;
}sqstack;
initstack(sqstack *s){
s->base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));
if(!s->base)exit(OVERFLOW);
s->top=s->base;
s->stacksize=STACK_INIT_SIZE;
return OK;
}
gettop(sqstack *s,char e){
if(s->top==s->base) return ERROR;
e=*(s->top-1);
return e;
}
push(sqstack *s,char e){
if(s->top-s->base>=s->stacksize){
s->base=(char*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(char));
if(!s->base) exit(OVERFLOW);
s->top=s->base+s->stacksize;
s->stacksize+=STACKINCREMENT;
}
*(s->top++)=e;
return OK;
}
pop (sqstack *s ,char e)
{if(s->top==s->base) return ERROR;
e=*(--(s->top));
return e;
}
input (sqstack *s)
{char n,k;
do
{
n=getchar();
switch (n)
{ case '(':push(s,n);break;
case '[':push(s,n);break;
case ']':if(!empty(s)&& gettop(s,k)=='[')
pop(s,k);
else push(s,n);
break;
case ')':if( !empty(s)&&gettop(s,k)=='(')
pop(s,k);
else push(s,n);
break;
}
}while(n!='\n');
}
choice(sqstack *s)
{if(s->top==s->base)
printf("correct");
else if(s->top!=s->base)
printf("wrong");
}
empty(sqstack *s)
{if (s->top==s->base)
return OK;
else
return ERROR;
}
main()
{sqstack s1;
printf("when you are input 0,the input of sign the is over:\n");
initstack(&s1);
input(&s1);
choice(&s1);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -