C++ 中堆栈的链表实现
Linked list implementation of stack in C++
我正在尝试在堆栈中使用简单的推送,弹出和显示函数作为链表实现。 我认为推送功能工作正常,但我在显示和弹出时遇到了问题。 每当我使用 Pop 功能时,我只得到一个结果,下次它说,">堆叠空!! 我认为我犯了一个逻辑错误。 请帮我。 我正在使用 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.Pushn2.Popn3.Shown4.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();
}
第二次推送后,您不会将temp
节点链接到现有的"堆栈"。
if(top==NULL)
{
temp->link=top;
top=temp;
}
如果,为什么需要这个?我想您每次都必须在 Push 方法中更新top
节点。
首先,你需要清除你关于通过链表实现堆栈的概念.....
您的 PUSH 函数应如下所示
void PUSH()
{
temp=new node;
cout<<"nEnter data item:";
cin>>temp->data;
temp->link=NULL;
if(top==NULL)
top=temp;
else
{
temp->link=top;
top=temp;
}
}
POP 函数被声明为 void,因此它不得返回任何值...正确的声明应该是
void POP()
{
if(top==NULL)
{
cout<<"nEmpty";
}
else
{
cout<<"nDeleted value is : "<<top->data;
temp=top;
top=top->link;
delete(temp);
}
}
而在 SHOW 函数中,其他部分应该是
temp=top;
while(temp!=NULL)
{
cout<<temp->data<<endl;
temp=temp->link;
}
我建议你应该使用代码块,因为它的用户界面比 Turbo C++ 更干净、更简单。
您可以通过这篇文章清除您的概念 在C++中使用链表进行堆栈
在你的PUSH
函数中,你只在NULL
top
的情况下才对新node
做任何事情,所以所有推送到非空堆栈都会被忽略(除了它们泄漏内存(。 试试这样。
void PUSH() {
temp = new node;
cout << "nEnter data item:";
cin >> temp->data;
temp->link = top;
top = temp;
}
相关文章:
- 如果没有malloc,链表实现将失败
- 不了解链表实现,请帮忙.C++
- 使用链表实现堆栈时出错
- 如何编写一个类似于kernellist_head的c++风格的双链表实现
- C++中链表实现的问题
- 链表实现 c++
- 难以理解链表实现(结构部分)?
- 为什么下面的使用链表实现线性队列的代码返回垃圾值然后崩溃
- 如何将自己的链表实现从存储整数更改为存储个人数据
- 在我的C++链表实现中取消引用节点指针,给出意想不到的结果
- C++ 中堆栈的链表实现
- c++ 中 if 语句中的多个条件(通过链表实现堆栈)
- C++ 访问数据的链表实现
- 使用链表实现队列
- 此链表实现中的错误
- 试图用c++编写我自己的链表实现,在点击列表中的3个元素后编写segfault代码
- 通过数组实现BST,通过链表实现堆
- 从后到前显示使用链表实现的队列
- C++链表实现多数据插入
- 反转使用链表实现的堆栈