鱼C论坛

 找回密码
 立即注册
查看: 2961|回复: 2

请问该代码除了时间耗费比较多还有其他问题吗?

[复制链接]
发表于 2019-8-6 16:38:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

题目描述
栈的应用非常广泛。请先实现一个栈模板类(定义已在下面给出),然后利用这个栈类解决下面的问题:
给定一个字符串,长度小于1000,其中只包含左右括号和大小写英文字母。请编写程序判断输入的字符串里的左右括号是否全部是匹配的,匹配规则即从内到外左括号都与其右边距离最近的右括号匹配。如匹配,输出“Yes”,否则,输出“No”。栈模板类定义如下:
#include <iostream>
#include <string>
using namespace std;

template<class T, int MAX = 1000>
class Stack
{
private:
       T list[MAX + 1];
       int top;
public:
       Stack();
       void push(const T &item);//将item压栈
       T pop();//将栈顶元素弹出栈
       const T & peek() const;//访问栈顶元素
       bool isEmpty() const;//判断是否栈空
};
//请完成栈模板类的实现,并解决括号匹配问题


输入描述
每个测例输入一个字符串,长度小于 1000 ,大于 0 。


输出描述
若输入字符串内的所有括号正确匹配,输出“Yes”,否则输出“No”。
代码:
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. #include<cstring>
  5. template<class T, int MAX = 1000>
  6. class Stack
  7. {
  8. private:
  9.        T list[MAX + 1];
  10.        int top;
  11. public:
  12.        Stack();
  13.        void push(const T &item);//将item压栈
  14.        T pop();//将栈顶元素弹出栈
  15.        const T & peek() const;//访问栈顶元素
  16.        bool isEmpty() const;//判断是否栈空
  17. };
  18. template<class T, int MAX>
  19. Stack<T,MAX>::Stack()
  20. {
  21.         top = -1;
  22. }
  23. template<class T, int MAX>
  24. bool Stack<T,MAX>::isEmpty() const
  25. {
  26.         if(top < 0)
  27.         {
  28.                 return true;
  29.         }
  30.         else
  31.         return false;
  32. }
  33. template<class T, int MAX>
  34. void Stack<T,MAX>::push(const T &item)
  35. {
  36.         list[++top] = item;
  37. }
  38. template<class T, int MAX>
  39. T Stack<T,MAX>::pop()
  40. {
  41.         if(!isEmpty())
  42.         {
  43.                 return list[top--];
  44.         }
  45.         else return 0;
  46. }
  47. template<class T, int MAX>
  48. const T & Stack<T,MAX>::peek() const
  49. {
  50.         if(!isEmpty())
  51.         {
  52.                 return list[top];
  53.         }
  54.         else return 0;
  55. }
  56. int main()
  57. {
  58.         Stack <char>s;
  59.         char c;
  60.         char a[1001];
  61.         cin >> a;
  62.         int i = 0,j;
  63.         bool t;
  64.         while(i <= (strlen(a)-1))
  65.         {
  66.                 s.push(a[i]);
  67.                 if(s.peek() == ')')
  68.                 {
  69.                         t = false;
  70.                         c = s.pop();
  71.                         while(c != '(' && !(!(s.isEmpty())))
  72.                         {
  73.                                 c = s.pop();
  74.                                
  75.                         }
  76.                         if(c == '(')
  77.                         {
  78.                                 t = true;
  79.                         }
  80.                         if(!t)
  81.                 {
  82.                         cout << "No" << endl;
  83.                         return 0;
  84.                 }
  85.                 }
  86.                
  87.                 i++;
  88.         }
  89.         if(s.isEmpty())
  90.         {
  91.                 cout << "Yes" << endl;
  92.                 return 0;
  93.         }
  94.        
  95.         else
  96.         {
  97.                 while(!(!(s.isEmpty())))
  98.                 {
  99.                         c = s.pop();
  100.                         if(c == '(')
  101.                         {
  102.                                 cout << "No" << endl;
  103.                                 return 0;
  104.                         }
  105.                 }
  106.                
  107.                
  108.         }
  109.        
  110. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-6 16:47:42 | 显示全部楼层
感觉真是C++语言。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-7 10:39:57 | 显示全部楼层
cenfeng1968 发表于 2019-8-6 16:47
感觉真是C++语言。

额,就是c++啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-12 18:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表