#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10
5:
/*将char类型定义为ElemType*/
7:
/*定义一个栈类型*/
9: ElemType *base;
10: ElemType *top;
int stacksize;
12: }sqStack;
13:
14:
void initStack(sqStack *s)
16: {
/*内存中开辟一段连续空间作为栈空间,首地址赋值给s->base*/
sizeof(ElemType));
/*分配空间失败*/
/*最开始,栈顶就是栈底*/
/*最大容量为STACK_INIT_SIZE */
22: }
23:
/*入栈操作*/
if(s->top - s->base >= s->stacksize){
/*栈满,追加空间*/
27: s->base = (ElemType *)realloc(s->base, (s->stacksize +
sizeof(ElemType));
/*存储分配失败*/
30: s->top = s->base + s->stacksize;
/*设置栈的最大容量*/
32: }
/*放入数据*/
34: s->top++;
35: }
36:
/*出栈操作*/
/*将栈顶元素弹出*/
/*修改栈顶指针*/
40: }
41:
/*获得栈s的大小*/
return (s.top - s.base) ;
44: }
45:
46:
char c){
return 1;
return 1;
return 0;
51: }
52:
int main()
54: {
55: sqStack s;
char c , e ;
/*初始化一个空栈*/
/*输入第一个字符*/
/*'#'为输入的结束标志*/
if(!StackLen(s))
/*如果栈为空,则说明输入的是第一个字符,因此保存在栈中*/
else
63: {
/*取出栈顶元素*/
/*将输入的元素与取出的栈顶进行比较,如果匹配不成功*/
/*先将原栈顶元素重新入栈*/
/*再将输入的括号字符入栈*/
68: }
69: }
/*输入下一个字符*/
71: }
/*如果栈s为空,则括号完全匹配*/
/*如果栈s不为空,则括号不完全匹配*/
return 0;
75:
76: }
77: