⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2.c

📁 括号匹配
💻 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 + -