【上机笔试之十】栈应用-扣号匹配

    xiaoxiao2021-03-25  79

    括号匹配问题是堆栈的一个典型应用。题目要求:对于每个一个’(‘,如果没有对应的’)’与之匹配,则对应标号下输出’$’。对于每个一个’)’,如果没有对应的’(‘与之匹配,则对应标号下输出’?’。实现代码如下:

    #include <iostream> #include<stdio.h> #include <stack> using namespace std; void main() { stack<int> S; char str[101]; char output[101]; while (scanf("%s", str) != EOF) { int i; for ( i = 0; str[i] != 0; i++) { if (str[i] == '(') { S.push(i); output[i] = ' '; } else if (str[i] == ')'){ if (S.empty() == false) { S.pop(); output[i] = ' '; } else { output[i] = '?'; } } else { output[i] = ' '; } } while (!S.empty()) { output[S.top()] = '$'; S.pop(); } output[i] = 0; printf("%s\n", str); printf("%s\n", output); } }

    上机笔试系类教程: 【上级笔试之一】数据输入 【上机笔试之二】冒泡排序 【上机笔试之三】快速排序 【上机笔试之四】快速排序(2) 【上机笔试之五】计算两个日期的差值 【上机笔试之六】Hash应用 【上机笔试之七】Hash应用(2)-从大到小顺序输出其中前m大的数 【上机笔试之八】二分法查找 【上机笔试之九】贪心算法-换零钱 【上机笔试之十】栈应用-扣号匹配

    转载请注明原文地址: https://ju.6miu.com/read-13633.html

    最新回复(0)