数据结构复习——链栈的一些操作以及表达式中的括号是否配对问题
来源:互联网 发布:java单例模式的优点 编辑:程序博客网 时间:2024/06/08 11:58
(提醒我自己:声明完指针并且要插入新节点的时候不要忘记malloc分配内存啊!)
**
主要思路:
**
声明一个链栈st,依次扫描字符表达式,如果遇到左括号‘(’则将其压入栈内,遇到右括号‘)’则先判断栈是否为空,为空则说明不配对,不为空则弹栈(因为此时栈中只有左括号,所以不需要像教材中那样判断弹出来的是否为左括号)。
扫描完字符串后判断栈是否为空,不为空则说明还有多余的左括号,不配对。
#include<iostream>using namespace std;#define ElemType chartypedef struct linknode // 声明链栈结构{ ElemType data; struct linknode *next;}LiStack;void InitStack(LiStack *&s){ s = (LiStack *)malloc(sizeof(LiStack)); s->next = NULL;}void Destory(LiStack *&s){ LiStack *p, *q;//q是p之后的指针 p = s; q = p->next; while (p->next != NULL) { free(p); p = q; q = q->next; }}void push(LiStack *&s, ElemType e)//将新数据节点插入到头结点之后{ LiStack *p; p = (LiStack *)malloc(sizeof(LiStack)); p->next = s->next; s->next = p; p->data = e;}bool pop(LiStack *&s, ElemType &e)//引用类型的e保存出栈的值{ if (s->next == NULL) { return false; } LiStack *p=s->next; s->next = p->next; e = p->data; free(p); return true;}//判断输入的表达式中括号是否配对bool Match(char *exp, int n)//n代表表达式长度{ int i = 0; char e; LiStack *st; InitStack(st); bool match = true; while (i < n) { if (exp[i] == '(') push(st, '('); else if (exp[i] == ')') { if (st->next == NULL) { return false; } pop(st, e); } i++;//DONT FORGET I++!!!!!! } if (st->next != NULL) { match = false; } return match;}int main(){ char *exp = "(((())(()))"; bool sss = Match(exp, 11); if (sss) { cout << "true1" << endl; } else cout << "false1" << endl; system("pause");}
阅读全文
1 0
- 数据结构复习——链栈的一些操作以及表达式中的括号是否配对问题
- 使用链栈判断输入的表达式中的括号是否配对
- “顺序栈”判断表达式中的括号是否正确配对
- 使用栈判断输入的表达式中括号是否配对
- 【数据结构基础】判别给定的表达式所含括号是否正确配对出现的算法。
- NYOJ 2 括号配对问题 数据结构栈的应用
- nyoj2括号配对问题(数据结构---栈)
- 正则表达式简单验证内容中的括号是否配对
- “链栈”判断表达式中的括号是否正确配对
- Java - - 判断表达式中的括号是否正确配对
- 数据结构,栈,括号配对
- ACM—括号配对问题
- 数据结构与算法学习之路:检查表达式的括号是否匹配——栈
- 括号配对问题 ACM 数据结构
- 假设表达式中包含三种括号 圆括号方括号大括号 设计一个算法用顺序栈判断表达式中的括号是否正确配对
- 栈的使用之检验算术表达式中括号是否配对
- 括号配对问题---栈
- 括号配对问题 栈
- VC++编程通过Bluetooth API调用对话框选择蓝牙设备并显示设备信息
- 深入分析ConcurrentHashMap1.8的扩容实现
- PHP安全相关的配置(2)
- mysql 中find_in_set()和in()用法比较
- Yii2 环境配置生产环境和测试环境
- 数据结构复习——链栈的一些操作以及表达式中的括号是否配对问题
- yii2 数据库查询
- yii2 笔记(1)
- linux shell获取用户输入
- php脚本#!/usr/bin/env php写法的好处
- shell for循环
- MFC之旅——SelectClipPath()函数的特性
- JSF 退出登录时删除session
- php 自定义函数大全