【发布时间】:2017-06-30 06:50:19
【问题描述】:
我正在尝试在堆栈中使用简单的 Push、Pop 和 Show 函数作为链表实现。我认为 Push 功能工作正常,但 Show 和 Pop 出现问题。每当我使用 Pop 函数时,我只会得到一个结果,而下一次它会显示“Stack Empty!!”。我认为我在做一个逻辑错误。请帮帮我。我正在使用 Turbo C++ 4.5。我在下面发布代码。提前致谢!
#include<iostream.h>
#include<conio.h>
#include<process.h>
struct node
{
int data;
node *link;
};
node *temp, *top;
void PUSH()
{
temp=new node;
cout<<"\nEnter data item:";
cin>>temp->data;
temp->link=NULL;
if(top==NULL)
{
temp->link=top;
top=temp;
}
}
void POP()
{
if(top==NULL)
{
cout<<"\nEmpty";
return;
}
temp=top;
top=top->link;
cout<<"\nDeleted value is : "<<temp->data;
temp->link=NULL;
delete(temp);
}
void SHOW()
{
if(top==NULL)
{
cout<<"\nEmpty!!";
return;
}
while(temp!=NULL)
{
cout<<temp->data<<endl;
temp=temp->link;
}
}
void main()
{ int ch;
do{
cout<<"\nEnter your choice";
cout<<"\n1.Push\n2.Pop\n3.Show\n4.Exit";
cin>>ch;
switch(ch)
{
case 1: PUSH();
break;
case 2: POP();
break;
case 3: SHOW();
break;
case 4: exit(0);
break;
}
}while(ch!=4);
getch();
}
【问题讨论】:
-
看起来您在
node *temp, *top;中将top初始化为NULL,但您在PUSH()中检查了top是否为NULL -
请阅读 OOP(你有 C++).. 也使用标准库 - 这已经用模板为你完成了
-
你为什么使用古老的编译器?
-
直到我通过高中,我只能坚持下去。
标签: c++ linked-list