【数据结构】括号匹配(栈的应用)

简介: 【数据结构】括号匹配(栈的应用)

根据栈“先入后出”的特性,我们可以利用栈进行括号匹配检验。

思路分析:

小括号()、中括号【】、大括号{},检查括号是否匹配,当遇到左括号时,入栈,遇到右括号出栈,最后检查栈中是否还堆积有元素,如果有证明匹配失败,如果栈空,证明匹配成功。

算法实现:

Status Matching()
{
  InitStack(S);
  char ch;
  int flag = 1;
  cin >> ch;
  while (ch != '#' && flag)//设表达式以‘#’结束
  {
    switch (ch)
    {
    case '{':
    case '[':
    case '(':
      Push(S, ch);
      break;
    case ')':
      if (!EmptyStack(S) && GetTop(S) == '(')
        Pop(S, x);
      else
        flag = 0;
      break;
    case ']':
      if (!EmptyStack(S) && GetTop(S) == '[')
        Pop(S, x);
      else
        flag = 0;
      break;
    case '}':
      if (!EmptyStack(S) && GetTop(S) == '{')
        Pop(S, x);
      else
        flag = 0;
      break;
    }
    cin >> ch;
  }
  if (EmptyStack(S) && flag)
    return OK;
  else
    return ERROR;
}


目录
相关文章
|
3天前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
|
11天前
初步认识栈和队列
初步认识栈和队列
35 10
|
5天前
数据结构(栈与列队)
数据结构(栈与列队)
11 1
|
10天前
|
存储 JavaScript 前端开发
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
37 1
|
6天前
【数据结构】-- 栈和队列
【数据结构】-- 栈和队列
9 0
|
11天前
探索数据结构:队列的的实现与应用
探索数据结构:队列的的实现与应用
|
11天前
探索顺序结构:栈的实现方式
探索顺序结构:栈的实现方式
|
11天前
|
存储
探索数据结构:单链表的实践和应用
探索数据结构:单链表的实践和应用
|
11天前
|
存储 测试技术
探索数据结构:顺序表的实现与应用
探索数据结构:顺序表的实现与应用
|
11天前
|
存储 C语言
栈和队列题目练习
栈和队列题目练习
12 0