C数据结构学习历程(4) 链栈之 括号匹配
来源:互联网 发布:短域名生成腾讯 编辑:程序博客网 时间:2024/05/02 05:01
我是参照《严蔚敏数据结构ppt》http://wenku.baidu.com/view/3ff16fc20242a8956aece41d.html以及《严蔚敏c数据结构视频》来写的,因为ppt上有些错,而视频上的代码不全,自己另写了。ppt上错哪,我就不指出了,大家可以对照着看,就能发现不同之处。
因为有注释,我直接copy代码了。也参考了关联的文章 “数据结构实验之栈四:括号匹配
#include<iostream>using namespace std;#define OK 1#define ERROR -1#define MAX_SIZE 100typedef int Status; typedef char ElemType;typedef struct Stack_Node //链栈的结点类型说明{ElemType data;struct Stack_Node *next;}StackNode;StackNode *Init_Link_Stack(){StackNode * top;top=(StackNode *)malloc(sizeof(StackNode));top->next=NULL;return (top);}void push(StackNode *top,ElemType e){StackNode *p;p=(StackNode*)malloc(sizeof(StackNode));p->data=e;p->next=top->next;top->next=p;}ElemType pop(StackNode*top){if(top->next==NULL) {cout<<"为空时,不能弹出"<<endl;return -1;}//ElemType e=top->data ; //不能这样,因为top是为空栈的StackNode *p=top->next;ElemType e=p->data ;top->next=p->next;free(p);return e;}ElemType getTop(StackNode *top){return top->next->data;}void judge(char a[]) // 给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。{int len=strlen(a); //遇到的第一个\0int i;StackNode *stack=Init_Link_Stack();for( i=0;i<len;i++){if(a[i]=='('||a[i]=='['||a[i]=='{'){push(stack,a[i]);}if(a[i]!=')'&&a[i]!=']'&&a[i]!='}') //输入的不是括号 continue;if(stack->next==NULL)//有了右半个括号,但是没有左半个括号的情况,因为不能获取最上的数据了,{cout<<"no"<<endl;break;}if(a[i]-getTop(stack)==1||a[i]-getTop(stack)==2) //a[i]为3种情况,只要与最上匹配都行的。小括号相差1,大括号与中括号相差2{pop(stack);}else {cout<<"no"<<endl;break;}}if(i==len){if(stack->next==NULL){cout<<"yes"<<endl;}}}int main(){char *a1="a+(b*c+{(d-3)]})";char a[7]={'a','+','(','b','*','c',')'};judge(a1);return 0;}
1 0
- C数据结构学习历程(4) 链栈之 括号匹配
- 学习笔记------数据结构(C语言版)栈应用 括号匹配
- 数据结构之---C语言实现括号匹配(栈实现)
- c++,数据结构之括号匹配问题
- 数据结构C语言版之括号匹配
- 数据结构之括号匹配
- 数据结构之栈之括号匹配问题
- 栈学习之括号匹配
- 数据结构栈的应用之括号匹配
- 数据结构之 栈的应用 括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 关于APK瘦身值得分享的一些经验
- Ubuntu下安装Qt4.8.6+QtCreator3.5.1
- svn: E000017: Can't create directory ***/.svn/tmp':
- android中简单的Handler与Message
- swift 内存管理
- C数据结构学习历程(4) 链栈之 括号匹配
- 获取listview的所有子目录高度(使用item较少情况)
- ffmpeg重要结构体之AVIOContext
- Windows 10 TH2首次重大更新1511正式发布
- (完整版)原因可能是堆被损坏,这也说明 中或它所加载的任何DLL 中有bug】的解决
- 我的Android进阶之旅------>Android中Dialog系统样式讲解
- 相机检测 麦克风检测
- 事务
- tomcat-users.xml配制