问题标题

数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法

2019-8-21来自ip:13.149.196.77的网友咨询

浏览量:270 手机版

问题补充:

数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法

网友答案

#include#includeusing namespace std;#define Maxsize 50class stack{private:char *st;int top;public:stack(){top=-1;st=new charMaxsize;}void clear(){top=-1;}bool isempty(){if(top==-1)return true;elsereturn false;}bool isfull(){if(top==Maxsize-1)return true;elsereturn false;}bool push(int item){if(top==Maxsize-1){coutreturn false;}else{st++top=item;return true;}}bool pop(char &item){if(top==-1){coutreturn false;}else{item=sttop--;return true;}}bool rtop(char &item){if(top==-1){coutreturn false;}else{item=sttop;return true;}}~stack(){delete st;}};bool match(char *p,int c){char m;int i = 0 ;stack q;while(i{switch(pi){case '{':case '':case '(':q.push(pi);break;case '}':if(!q.isempty()&&q.pop(m)&&m=='{'){break;}elsereturn false;case '':if(!q.isempty()&&q.pop(m)&&m==''){break;}else return false;case ')':if(!q.isempty()&&q.pop(m)&&m==')'){break;}else return false;}i++;} return q.isempty(); }void main(){char arrMaxsize;char *s=arr;int c;coutcin.getline(arr,Maxsize);c=strlen(s);if(match(s,c)){coutelse{cout}望。

网友答案

#include#includeusing namespace std;#define Maxsize 50class stack{private: char *st; int top;public: stack() { top=-1; st=new charMaxsize; } void clear() { top=-1; } bool isempty() { if(top==-1) return true; else return false; } bool isfull() { if(top==Maxsize-1) return true; else return false; } bool push(int item) { if(top==Maxsize-1) { cout

网友答案

这是一个简单的括号匹配程序, 不过我认为对于你学习足够了#include<stdio.h> #define MAX 20 typedef struct { char dataMAX; //栈中的数组data int top; //栈顶位置 }sstack; //顺序栈 void initstack(sstack *s)//初始化顺序栈 { s->top= 0; }void push(sstack *s, char x) { // s为栈指针,x为入栈的新元素,将x压入到s栈顶 if(s->top==MAX-1) //检查是否栈满 printf"栈已满,不能入栈!"; else { s->top++; //使top指向新的位置 s->datas->top-1=x; //把x放入新栈顶 } } void pop(sstack *s) { //若栈s不为空,则删除栈顶元素 if(s->top==0 ) //检查是否栈空 printf"栈为空,不能出栈!";/*栈空*/ else s->top--;//修改栈顶指针 } char gettop(sstack *s) { //若栈s不为空,则取得栈顶元素 if(s->top==0) //栈空 printf"栈为空!"; else return(s->datas->top); //返回栈顶元素 } void check(sstack *s) { int bool; char ch; push(s,'#'); //在栈底压入#,做为结束标志 scanf("%c",&ch); //读入一个字符 bool=1; //假设括号匹配 while(ch!='#'&&bool) //当读入的字符不是结束符且目前括号匹配 { if(ch=='(') push(s,ch); //如果是左括号则入栈 if(ch==')' //如果是右括号 if(ch=gettop(s)=='#') bool=0; //如果栈顶是结束符,即没有匹配的'',则设置不匹配标志,此时表示''多于'' else pop(s); //左括号出栈,表与右括号配对 scanf("%c",&ch); //读入下一个字符,继续检查 } if(gettop(s)!='#')&&bool==1 ; //栈顶还有'',则''多于'',设置不匹配标志 if(ch==')') printf"括号不匹配"; else printf"括号匹配"; } void main() { sstack st,*s; s=&st; initstack(s); //初始化栈 printf"请输入由''和''组成的字符串,该字符串以'#'结束,程序将检查字符串是否括号匹配\n"); check(s);//进行括号匹配的检查 }希望对你有帮助

网友答案

#includestruct T{int tag;};struct T t128;int top=0;int isEmpty(){if(top=127) return 1;else return 0;}void push(int tag){if(isFull()) {return;}ttop.tag=tag;top++;}int out(){if(isEmpty()) {return -1;}int number=0;number=ttop.tag;ttop.tag=0;top--;return number;}int check(char *p){int x128={0};int temp=0;int k=0;while(*p!='\0'){if(*p=='{') push(temp);if(*p=='}') k=out();if(k==-1) break;temp++;p++;}if(top!=0){while(!isEmpty()){printf("%d处的{没有匹配,缺少}\n",out()-1);}}else{printf("%d处的}没有匹配,缺少{\n",temp);}return 0;}main(){char *x="main(){int x=0;while(true){int x=324;}printf('dsgdg');}}}";printf("%d\n",check(x));}

网友答案

输入:串中只含有'', ''两个符号,判断是否括号匹配并不需要真正的入栈、出栈,用top移动模拟即可#include <stdio.h>int main(){char s256, *p;int top = 0;scanf("%s", s);for(p=s; *p; p++){if(*p == '(')++top; //入else --top; //出if(top < 0)break; //无左括号与之匹配}if(!*p && !top)puts("Yes");else puts("No");}

网友答案

从你的代码可以看出,你想在开始将‘’压栈,作为结束条件。

在循环中采集每次的输入字符,如果不匹配,则压栈输入字符;如果匹配,为‘’字符,则将栈中所有字符全部出栈。

上面代码的主要问题是循环条件的判断的问题,你可以分析下。

下面是我在你的代码基础上进行了小小修改后的代码,提供给你参考下。

保存为CPP文件,用C++编译测试通过。

#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef char SElemType;typedef int Status;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct _SqStack{ SElemType *base; SElemType *top; int stacksize;}SqStack;Status InitStack(SqStack &S){ S.base = (SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType)); if(!S.base) return FALSE; S.top = S.base; S.stacksize = STACK_INIT_SIZE; return OK;}Status Push(SqStack &S, SElemType e){ *S.top++ = e; printf("0x%.8x: PUSH %c\n", S.top, e); return OK;}Status Pop(SqStack &S, SElemType &e){ if(S.top == S.base) return ERROR; e = *--S.top; printf("0x%.8x: POP %c\n", S.top, e); return OK;}Status StackEmpty(SqStack &S){ if(S.base == S.top) return TRUE; else return FALSE;}main(){ SqStack S; SElemType e; //初始化栈 InitStack(S); //将 压入栈底,作为结束条件 e=''; Push(S, e); //循环接收键盘字符, //不匹配则将字符压栈, //匹配则将 与 之间字符全部出栈,只到栈底结束 while(S.top > S.base) { fflush(stdin); e = getchar(); if (e != '') { Push(S, e); } else { printf("\n"); printf("----Get matched char ''\n"); printf("----POP Stack----\n"); S.top --; while(*(S.top)!= '') { Pop(S, e); } } fflush(stdout); } Pop(S, e); printf("\n"); //释放栈 if(StackEmpty(S)) return TRUE; else return FALSE;}

网友答案

#include #include int isLeftBracket(char ch){ return ch=='(' || ch=='' || ch=='{' || ch=='';}int mathcBracket(char left,char right){return (left==')' && right == '(') || (left=='' && right == '') || (left=='}' && right == '{') || (left=='>' && right == ' 0 && mathcBracket(stri,stacktop-1) ){top--;continue;}else{break;}}}if(stri == '\0'){ printf("Yes\n"); }else{ printf("No\n");} }return 0;}应该没有什么问题。

我来回答

验证码:

大家还关注

字符串括号匹配c语言,数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法...相关推荐

  1. 为什么除了Go语言, 其他类C语言都是垃圾[翻译][转]

    2019独角兽企业重金招聘Python工程师标准>>> 英文原文: http://www.syntax-k.de/projekte/go-review 原始翻译: http://ww ...

  2. c语言解析sql语句_解析SQL语句比解析类C语言更麻烦?

    最近想做一个SQL语句解析器,换句话说想给自己的系统加上类似SQL语句的查询引擎.我之前做过一个解析类似C语言语法的解析器,可以解析 C/C++里的运算表达式,if-else-等基本语句.我以为做个S ...

  3. 数据结构 习题 第五章 多维数组和广义表 (C语言描述)

    最近在复习数据结构,所以想把平时上课做的习题做个总结,如果大家有遇到这方面的问题就可以参考一下了,废话不多说,直接开始吧. 1.单选题 稀疏矩阵一般的压缩存储方法有两种,即( D) A. 二维数组和三 ...

  4. 数据结构——无向图创建邻接表以及深度遍历、广度遍历(C语言版)

    摘自:数据结构--无向图创建邻接表以及深度遍历.广度遍历(C语言版) 作者:正弦定理 发布时间:2020-12-22 20:55:12 网址:https://blog.csdn.net/chinese ...

  5. 约瑟夫环数据结构c语言程序,数据结构的C语言(类C语言)--单向循环链表--约瑟夫环...

    代码区 约瑟夫环:用类C语言实现!!!可以成功运行!!!不是仅仅的算法,而是实实在在的类C #include #include typedef int ElemType; typedef struct ...

  6. c语言程序设计教程高佳琴主编答案,数据结构与算法应用教程.ppt

    <数据结构与算法应用教程.ppt>由会员分享,可在线阅读,更多相关<数据结构与算法应用教程.ppt(41页珍藏版)>请在人人文库网上搜索. 1.书名:数据结构与算法应用教程 I ...

  7. 数据结构上机-尾、头插法建立单链表-单链表遍历C语言完整代码实现

    点击此处跳转视频链接:数据结构上机-尾.头插法建立单链表-单链表遍历C语言完整代码实现

  8. 武汉工程大学c语言作业,武汉工程大学2016考研《数据结构(C语言版)》考试大纲...

    2016考研学习交流群:410257364 考试大纲作为考研学子备考复习的方向指南,每年都备受关注,尤其是当年新考试大纲.建议各位考生朋友,在借助往年考试大纲进行复习时,及时关注新考试大纲,以便积极应 ...

  9. R语言安装本地包、Warning in system(cmd) : ‘make‘ not found、安装和R版本匹配的Rtools

    R语言安装本地包.Warning in system(cmd) : 'make' not found.安装和R版本匹配的Rtools 目录 R语言安装本地包.Warning in system(cmd ...

最新文章

  1. Android 金钱计算BigDecimal 的使用
  2. 股市币市:数据分析与交易所最新公告
  3. 线程安全的集合类、CopyOnWrite机制介绍(转)
  4. Ant在Java项目中的使用(一眼就看会)
  5. 【网络安全】关于ARP攻击的原理以及在Kali Linux环境下的实现
  6. tomcat GET 编码疑惑
  7. 10 种保护 Spring Boot 应用的绝佳方法 1
  8. 外贸网站SEO优化要共享IP还是独立IP
  9. Java自动生成增量补丁自动部署_Shell脚本结合Git实现增量项目部署
  10. 大数据学习入门级书籍推荐
  11. 上市公司风险预警案例可视化演示系统(附代码)
  12. 像计算机科学家一样思考(C++)
  13. android中关闭软键盘
  14. 使用proteus仿真STM32超声波SRF04测距!Code+Proteus
  15. 面向开发者稳定、安心的APP内测托管平台
  16. 计算机电源电压的调整,电压调整电路、电压调整方法及其计算机系统
  17. C#开发实战视频教程_基于多线程C#开发QQ农场
  18. JavaScript 使用js修改页面元素
  19. Python max函数
  20. 【ArcGIS】空间表无法删除的问题处理

热门文章

  1. Oracle分布式数据库的垂直分片实例
  2. 重庆工商大学java重修_关于调整重修方式的通知
  3. 戴尔服务器系统过热,dell服务器过热保护
  4. 101. 最高的牛(差分)
  5. linux的文件 IO
  6. 思维导图软件 XMind 和 MindManager 哪个更好?
  7. 给你的cubeIDE加上翅膀--添加类似keil的代码补全功能!
  8. HiSecEngine USG6500E系列AI防火墙(盒式)资料分享
  9. 信息系统_服务_审计_资质_监理
  10. ipv6服务器有什么优势,网站切换到IPv6的优势与必然性