鱼C论坛

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

[已解决]C++链栈基本操作——出栈时不能输出出栈元素

[复制链接]
发表于 2020-9-27 10:32:05 | 显示全部楼层 |阅读模式
1鱼币
在输入 D 时希望输出出栈的 元素,不知道哪里出错了,不要改动别的地方,只改Pop()里的或后面调用Pop的语句
  1. #include<iostream>
  2. using namespace std;
  3. class Node
  4. {
  5. public:
  6.         char data;
  7.         Node *next;
  8. };
  9. class LinkStack
  10. {
  11. public:
  12.         LinkStack(){top=NULL;}
  13.         ~LinkStack();
  14.         void Push(char x);
  15.         char Pop();
  16.         void Delete();
  17.        
  18.         char GetTop()
  19.         {
  20.                 //ToDo
  21.                 return top->data ;
  22.         }
  23.         int Empty()
  24.         {
  25.                 //ToDo
  26.                 if (top->next = NULL)
  27.                 {
  28.                         return 0;
  29.                 }
  30.                 else
  31.                 {
  32.                         return 1;
  33.                 }




  34.         }
  35. private:
  36.         Node *top;
  37. };
  38. LinkStack::~LinkStack()
  39. {
  40.         //ToDo

  41. }
  42. void LinkStack::Push(char x)
  43. {
  44.         //ToDo
  45.         Node *s = new Node;
  46.         s->data = x;
  47.         s->next = top;
  48.         top = s;
  49. }
  50. char LinkStack::Pop()
  51. {
  52.         //ToDo
  53.         Node *p = NULL;
  54.         char x;
  55.         if(top == NULL) throw "None";
  56.         x = top->data ;
  57.         p = top;
  58.         top = top->next ;
  59.         delete p;
  60.         return x;
  61. }
  62. void LinkStack::Delete()
  63. {
  64.      //ToDo
  65.      LinkStack lin;
  66.      while(top != NULL)
  67.      {
  68.              lin.Pop() ;
  69.          }
  70. }
  71. int main()
  72. {
  73.         LinkStack Seq;
  74.         char str,x;
  75.         while(1)
  76.         {
  77.                 cin>>str;
  78.                 //ToDo
  79.         if(str == 'P')
  80.         {
  81.                 Seq.Push(x);
  82.         }
  83.         else if(str == 'D')
  84.         {
  85.                 x = Seq.Pop();
  86.                 cout<<x <<endl;
  87.         }
  88.         else if(str == 'T')
  89.         {
  90.                 Seq.Delete()  ;
  91.         }
  92.         else if(str == 'Y')
  93.         {
  94.                 int flag = Seq.Empty();
  95.                 if(flag)
  96.                 {
  97.                         cout<<"No"<<endl;
  98.                 }
  99.                 else
  100.                 {
  101.                         cout<<"Yes"<<endl;
  102.                 }
  103.         }
  104.         else if(str == 'E')
  105.         {
  106.                 break;
  107.         }
  108.        
  109.         }
  110.         return 0;
  111. }
复制代码
谢谢啦
最佳答案
2020-9-27 10:32:06
x没有初始化,而且x入栈前没有赋值啊!

  1.         if(str == 'P')
  2.         {
  3.                cin >> x
  4.                 Seq.Push(x);
  5.         }
复制代码

最佳答案

查看完整内容

x没有初始化,而且x入栈前没有赋值啊!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-27 10:32:06 | 显示全部楼层    本楼为最佳答案   
x没有初始化,而且x入栈前没有赋值啊!

  1.         if(str == 'P')
  2.         {
  3.                cin >> x
  4.                 Seq.Push(x);
  5.         }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-27 10:40:52 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-4 16:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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