第三章:顺序栈及其应用之二---括号匹配
2015-01-05 13:00
316 查看
#include <stdio.h> #include <string.h> #include <iostream> using namespace std; #define MAXSIZE 100 int flag=1; typedef struct LNode { char *top; char *base; int lenth; }LNode,*LinkList; LinkList Oper; void Creat(LinkList &L) { L=new LNode; L->top=new char[MAXSIZE]; L->base=L->top; L->lenth=MAXSIZE; printf("链表初始化完毕!\n"); } int Push(LinkList &L,char c) { //入栈; if(L->top - L->base == MAXSIZE) {printf("栈已满!\n");return 0;} *L->top=c; L->top++; } char Get(LinkList L) { return *(L->top-1); } int Pop(LinkList &L,char &c) { //出栈 if(L->top == L->base) {printf("栈已空!\n");return 0;} L->top--; c=*L->top; return 1; } int StackEmpty(LinkList L) { if(L->top-L->base==1) return 1; else return 0; } void Match() { flag=1; printf("这是一个判断括号是否匹配的程序!\n请输入一串括号:(以#号结束)\n"); char c,b;cin>>c;Push(Oper,'#'); while(c!='#' || Get(Oper)!='#' && flag) { if(c=='(' || c=='[') {Push(Oper,c);cin>>c;} else if(c==')') { if('('==Get(Oper)) {Pop(Oper,b);cin>>c;} else{flag=0; break;} } else if(c==']') { if('['==Get(Oper)){Pop(Oper,b);cin>>c;} else {flag=0;break;} } } if(flag && StackEmpty(Oper)) printf("匹配成功!\n"); else printf("不成功!\n"); } int main() { Creat(Oper); Match(); return 0; }
相关文章推荐
- 第三章:顺序栈及其应用之二---括号匹配
- 数据结构(1)——顺序栈的实现,以及括号匹配的应用
- 顺序栈的应用-括号匹配
- 第三章:顺序栈及其应用之三---数制转换
- 栈的应用之二----------括号匹配的检验
- 卡特兰数定义及其几个常用的应用(附例子"括号匹配"代码)+应用总结
- 【学习点滴-数据结构-栈&队列】 栈的应用之二:括号匹配的检测
- 数据结构——顺序栈及其应用(括号匹配)
- 第三章:顺序栈及其应用之三---数制转换
- 第三章:顺序栈及其应用之一---表达式求值
- 第三章:顺序栈及其应用之一---表达式求值
- (学习笔记)C++括号匹配----栈的应用
- 数据结构题典021:栈的应用——括号匹配的检验(C++)
- 3.2栈的应用举例----数制转换、括号匹配及行编辑
- 栈的应用2:检查括号匹配
- 栈的应用——括号匹配的检验(C语言)
- 15数组实现顺序堆栈的括号匹配问题
- 数据结构(C语言)读书笔记6:栈的应用之括号匹配的C代码实现
- C语言 顺序栈使用之括号匹配
- 堆栈数据结构应用之括号匹配检查(算法3.2.2)