首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

链表中新建节点的功用区间

2013-10-30 
链表中新建节点的作用区间#includeiostreamusing namespace stdstruct node{int datanode *next}cla

链表中新建节点的作用区间
#include<iostream>
using namespace std;
struct node
{
int data;
node *next;
};
class lian
{
private:
node *front,*rear;
public:
lian();
~lian();
void isempty();
void display();
void addq(int x);
void delet();
void getfront();
};
lian::lian()
{
node *p;
p= new node;
p->next=NULL;
front=rear=p;
//cout<<p<<endl;
//cout<<rear<<endl;
}
lian::~lian()
{
/*node *p;
if(front==NULL||front->next==NULL)
{}
else
{
p=front->next;

while(p!=NULL)
{
front->next=p->next;
delete p;
p=front->next;
}
delete front;
delete rear;
}*/
}
void lian::isempty()
{
if(front==rear)cout<<"链表为空"<<endl;
else cout<<"链表不为空"<<endl;
}
void lian::display()
{
if(front==rear)cout<<"链表为空"<<endl;
else
{
node *p;
p=front->next;
while(p!=rear)
{
cout<<p->data<<endl;
p=p->next;

}
cout<<p->data<<endl;
}
}
void lian::addq(int x)
{
node *p;
p=new node;
p->data=x;
p->next=NULL;
rear->next=p;
rear=p;
//delete p;

}
void lian::delet()
{
if(front==rear)cout<<"链表为空,无法删除"<<endl;
else
{
int x;
node *p;
p=front->next;
x=p->data;
front->next=p->next;
if(p->next==NULL)rear=front;
delete p;
cout<<"删除成功,删除节点数据为x="<<x<<endl;
}
}
void lian::getfront()
{
if(front==rear)cout<<"链表为空"<<endl;
else 
{
cout<<"队首数据为front=";
cout<<front->next->data<<endl;

}
}
void main()
{
lian mark;
mark.isempty();
int x;
/*cin>>x;
mark.addq(x);*/
cout<<"输入要添加数据个数"<<endl;
cin>>x;
while(x)
{
int y;
cout<<"输入要添加的数据"<<endl;
cin>>y;
mark.addq(y);
x--;
}/**/mark.display();
mark.delet();
mark.getfront();
/**/
}
程序中加红的那条程序 我不知道为什么不能加上去 一旦加上去难道rear相当于也被删了吗? c++ 数据结构? 队列 删除节点
[解决办法]
你的想法是对的 因为他们俩指针都指向同一块内存!会造成rear 成为野指针
[解决办法]
是的,指向同一段内存

热点排行