电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C语言之符号匹配

C语言之符号匹配_第1页
1/3
C语言之符号匹配_第2页
2/3
C语言之符号匹配_第3页
3/3
5):利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号 ,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正确的格式。输入一个包含上述括号的表达式,检验括号是否配对.本题给出部分 check()函数,要求将 check()函数补充完整,并完成整个程序。typedef char SElemType; #include”malloc。h" #include"stdio。h” #include”math.h” #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; // Status 是函数的类型,其值是函数结果状态代码,如 OK 等 #define STACK_INIT_SIZE 10 // 存储空间初始分配量 #define STACKINCREMENT 2 // 存储空间分配增量 struct SqStack { SElemType *base; // 在栈构造之前和销毁之后,base 的值为 NULL SElemType *top; // 栈顶指针 int stacksize; // 当前已分配的存储空间,以元素为单位 }; // 顺序栈 Status InitStack(SqStack &S) { S。base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S。base){return ERROR;}S.top = S.base;S。stacksize=STACK_INIT_SIZE;return OK;} Status StackEmpty(SqStack S) { if(S.top == S。base)return TRUE;elsereturn FALSE;} Status Push(SqStack &S,SElemType e) { if(S。top—S.base〉=S.stacksize){S。base=(SElemType *)realloc(S.base,(S。stacksize+STACKINCREMENT)*sizeof(SElemType));if(!S。base){return ERROR;}S.top = S.base+S。stacksize;S。stacksize+= STACKINCREMENT;}*S.top++ = e;return OK;} Status Pop(SqStack &S,SElemType &e) { if(S。top==S。base) { return ERROR; } e=* -—S.top; return OK;} Status Gettop(SqStack &S,SElemType &e){ if(S。top==S。base) { return ERROR; } else e=*(S.top-1); return OK;}int check() { // 对于输入的任意一个字符串,检验括号是否配对 SqStack s; SElemType ch[80],*p,e; if(InitStack(s)) // 初始化栈成功 { //printf("请输入表达式\n”); gets(ch); p=ch; while(*p) // 没到串尾 switch(*p) { case ’(’: case ’[’: Push(s,*p); p++; break; // 左括号入栈,且 p++ case ')’: case ']’: if(!StackEmpty(s)) // 栈不空 { Gettop(s,e); if(*p==’)'&&e!=’('||*p==’]’&&e!='[') { printf(”isn’t matched pairs\n"); return ERROR; } else { Pop(s,e);p++; break; // 跳出 switch 语句 } } else { printf(”lack of left parenthesis\n"); return ERROR; } default: p++; // 其它字符不处理,指针向后移 } if(StackEmpty(s)) // 字符串结束时栈空 printf("matching\n”); else printf("lack of right parenthesis\n"); } return OK;} int main() { check();return OK;}

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

C语言之符号匹配

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部