【发布时间】:2016-10-15 09:46:19
【问题描述】:
这里在pop函数中,top赋值给temp后,写成top=top->link,但是top=top->link怎么让它指向它的后节点呢?
top=top->link 意味着向前移动并指向其前面的节点,这里应该是NULL。
编辑:cout 添加到 pop。现在让问题更具体,cout<<top->data 将如何打印 32 ?它应该指向NULL。
#include<iostream>
using namespace std;
class stack_ll{
private:
struct node{
int data;
node *link;
}*top;
public:
stack_ll()
{
top=NULL;
}
void push(int);
void pop();
void display();
~stack_ll()
{
if(top==NULL)
return;
node *temp;
while(top!=NULL)
{
temp=top;
top=top->link;
delete temp;
}
}
};
void stack_ll::push(int num)
{
node *temp;
temp=new node;
if(temp==NULL) {
cout<<"stack is full"<<endl;
return;
}
temp->data=num;
temp->link=top;
top=temp;
}
void stack_ll::pop(){
if(top==NULL)
{
cout<<"stack is empty"<<endl;
return;
}
node * temp;
int item;
temp=top;
item=temp->data;
top=top->link;
cout<<top->data<<endl;
delete temp;
}
int main()
{
stack_ll l1;
l1.push(5);
l1.push(56);
l1.push(32);
l1.push(34);
l1.pop();
l1.push(23);
l1.pop();
}
【问题讨论】:
-
@FirstStep:你在说什么?链接指向下方。
top->link指向下一个元素,即弹出后的新顶部。
标签: c++ data-structures linked-list stack