仙桃做网站找谁,ppt做视频模板下载网站,极强防红短链接生成,net网站开发JD1、顺序栈的定义
2、顺序栈的入栈#xff0c;出栈#xff0c;取出栈顶元素#xff0c;匹配判断函数
3、顺序栈的运行测试
4、实现代码
#includeiostream
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
#define M…1、顺序栈的定义
2、顺序栈的入栈出栈取出栈顶元素匹配判断函数
3、顺序栈的运行测试
4、实现代码
#includeiostream
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
#define MAXSIZE 100
typedef struct
{char *top;char *base;int stacksize;
}SqStack;Status InitStack(SqStack S)
{S.base new char[MAXSIZE]; //为顺序栈动态分配一个最大容量if (!S.base) //分配空间失败exit(OVERFLOW);S.top S.base; //top起始指向base表示空栈S.stacksize MAXSIZE;return OK;
}Status Push(SqStack S,char e) //元素e压入栈
{if (S.top - S.base MAXSIZE)return ERROR;*S.top e; //top当前指向的内存存储e之后topreturn OK;
}
Status Pop(SqStack S, char e) //取出元素e
{if (S.base S.top)return ERROR;e *--S.top; //先让top--指向栈顶元素然后取出return OK;
}char GetTop(SqStack S)
{if (S.top ! S.base)return *(S.top-1); ///取出栈顶元素top指向保持不变
}Status CheckStack(SqStack S,char str[])
{for (int i 0; i strlen(str); i){if (str[i] ( || str[i] [ || str[i] {)Push(S, str[i]);else{if (S.topS.base)//匹配到右括号但是栈为空结束匹配{cout 匹配失败;return ERROR;}if (str[i] )GetTop(S) ( || str[i] ]GetTop(S) [ || str[i] }GetTop(S) {){char temp;Pop(S, temp); //匹配到右括号与栈顶元素匹配如果匹配弹出栈顶元素继续进行匹配}else{cout 匹配不成功;return ERROR;}}}if (S.top S.base){cout 匹配成功;return OK;}else{cout 左括号多于右括号,匹配失败;return ERROR;}}
int main()
{SqStack S;InitStack(S);char s[20];cout 请输入待匹配的括号:;cin s;CheckStack(S, s);getchar();getchar();return 0;
}