Aj *_*les 2 c++ stack linked-list
#include<iostream>
#include<cstdlib>
using namespace std;
struct node
{
int data; //data
node *next; //link
};
class stack // stack using linked list
{
public:
node *top; // top element of stack
public:
stack()
{
top= NULL;
}
void push(int value)
{
node *temp = new node; // create a new node
temp-> data = value;
temp-> next = NULL;
if(top==NULL) // stack is empty
{
top=temp;
temp=NULL;
}
else
{
temp-> next = top;
top=temp;
temp=NULL;
}
}
//template <class X>
void pop()
{
if(top==NULL)
{
cout<<"\nStackOverflow "<<endl;
cout<<"Program Terminated "<<endl;
exit (0);
}
else
{
top=top->next;
}
}
void display()
{
node *temp=new node;
temp=top;
while(temp!=NULL)
{
cout<<temp->data<<" ";
temp = temp-> next;
}
while(top==NULL)
{
cout<<"\nStack is Empty "<<endl;
exit (0);
}
}
};
int main()
{
stack a;
a.push(5);
a.display();
a.push(10);
a.display();
a.pop();
a.pop();
a.push(20);
a.display();
a.pop();
a.display();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码的输出为5 10 5 20堆栈为空.
输出错误,正确的输出是5 10 20堆栈是空的..
任何人都告诉我为什么会出现这种错误.
代码的参考:[ 在c ++中使用模板和链接列表实现堆栈
不,输出是正确的.
a.push(5);
a.display();
Run Code Online (Sandbox Code Playgroud)
这显示了第一个5.
a.push(10);
a.display();
Run Code Online (Sandbox Code Playgroud)
在5仍然是在栈上,所以现在这显示10,然后5.
a.pop();
a.pop();
a.push(20);
a.display();
Run Code Online (Sandbox Code Playgroud)
现在一切都被删除,20添加和显示,所以这应该只显示20.
然后打印空堆栈
a.pop();
a.display();
Run Code Online (Sandbox Code Playgroud)
所以放在一起,它应该显示出来5 10 5 20 Stack is Empty.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |