C++ 在c+;中运行此堆栈实现后,输出屏幕将挂起+; #包括 使用名称空间std; 结构节点{ 字符串s; 节点*链接; }*top=NULL,*temp,*p; 节点*新节点(节点a){ p=新节点; p->s=a.s; p->link=a.link; top=p; } void showstack(){ *温度=*顶部; while(temp!=NULL){ coutlink; } } int main(){ 字符a; int m; int i=0; 节点推送; do{std::cin>>push.s; if(top==NULL) push.link=NULL; 其他的 推动链接=顶部; 新的_节点(push); i++; }而(i

C++ 在c+;中运行此堆栈实现后,输出屏幕将挂起+; #包括 使用名称空间std; 结构节点{ 字符串s; 节点*链接; }*top=NULL,*temp,*p; 节点*新节点(节点a){ p=新节点; p->s=a.s; p->link=a.link; top=p; } void showstack(){ *温度=*顶部; while(temp!=NULL){ coutlink; } } int main(){ 字符a; int m; int i=0; 节点推送; do{std::cin>>push.s; if(top==NULL) push.link=NULL; 其他的 推动链接=顶部; 新的_节点(push); i++; }而(i,c++,pointers,stack,C++,Pointers,Stack,0.05) #include <bits/stdc++.h> using namespace std; struct node { string s; node* link; }*top=NULL,*temp,*p; node* new_node(node a){ p=new node; p->s=a.s; p->link=a.link; top=p; } void showstack(){ *tem

0.05)

#include <bits/stdc++.h>
using namespace std;
struct node {
     string s;
     node* link;
}*top=NULL,*temp,*p;

node* new_node(node a){
     p=new node;
     p->s=a.s;
     p->link=a.link;
     top=p;
}
void showstack(){
     *temp=*top;
     while(temp!=NULL){
          cout<<top->s;
          temp=top->link;
     }
}
int main(){
     char a;
     int m;
     int i=0;
     node push;
     do{  std::cin >> push.s;
          if(top==NULL)
               push.link=NULL;
          else
               push.link=top;
          new_node(push);
          i++;
     }while(i<=5);
     cout<<top->s;
     showstack();
     return 0;
}

想一想
temp
点的位置,并在一些纸上画方框和箭头以了解原因

(当局部变量可用时,不要使用全局变量。这只是自找麻烦。)

替换

#include <bits/stdc++.h>
using namespace std;
struct node {
     string s;
     node* link;
}*top=NULL,*temp,*p;

node* new_node(node a){
     p=new node;
     p->s=a.s;
     p->link=a.link;
     top=p;
}
void showstack(){
     *temp=*top;
     while(temp!=NULL){
          cout<<top->s;
          temp=top->link;
     }
}
int main(){
     char a;
     int m;
     int i=0;
     node push;
     do{  std::cin >> push.s;
          if(top==NULL)
               push.link=NULL;
          else
               push.link=top;
          new_node(push);
          i++;
     }while(i<=5);
     cout<<top->s;
     showstack();
     return 0;
}

想一想
temp
点的位置,并在一些纸上画方框和箭头以了解原因


(当局部变量可用时,不要使用全局变量。这只是自找麻烦。)

请在适当的情况下应用大写规则,缩进您的代码和问题所在。在缩进之前,请阅读。欢迎阅读。这里,
temp=top->link;
永不更改,所以
temp
永不更改,所以循环永不结束。在调试器中运行程序,当程序挂起时,暂停程序请检查它挂在哪里。谢谢!但是你能提供一些链接或参考资料,说明资本化必须在哪里吗?如果可能的话,你还可以建议我如何改进代码的缩进@Ron@nwp给一个人一个bug补丁,他会吃上一天……给一个人一个调试器,他就能捕捉到自己的bug?请用大写字母在适当的情况下,缩进规则,缩进代码和问题所在。在缩进之前,请先阅读。欢迎使用缩进规则。
temp=top->link;
此处,
top->link
永不更改,所以
temp
永不更改,所以循环永不结束。在调试器中运行程序,当程序挂起时,暂停程序并检查挂起的位置谢谢!但是你能不能提供一些链接或参考资料,说明资本化必须在哪里?如果可能的话,你还可以建议我如何改进代码的缩进@Ron@nwp给一个人一个bug补丁,他就可以吃上一天……给一个人一个调试器,他就能抓住自己的bug?
temp = top;