关于NULL.到底是什么?
du51 2005-03-28 12:40:34 #include<iostream>
using namespace std;
struct SingleNode
{
int i;
SingleNode *next;
};
struct DoubleNode
{
int i;
DoubleNode *pre;
DoubleNode *next;
};
SingleNode *createSingleLink()
{
SingleNode *SingleHead,*p,*q;
int i;
SingleHead=NULL;
cout<<"请输入数据以-1结束"<<endl;
cin>>i;
while(i!=-1)
{
p=new SingleNode;
p->i=i;
if(SingleHead==0)
{
SingleHead=p;q=p;
}
else
{
q->next=p;q=p;
}
cin>>i;
}
if(SingleHead)p->next=NULL;
cout<<"单链表已经形成!"<<endl;
return SingleHead;
}
void freeSingleLink(SingleNode *SingleHead)
{
SingleNode *p=SingleHead;
while(p)
{
SingleHead=p->next;
delete p;
p=SingleHead;
}
cout<<"单链表已经形销毁!"<<endl;
}
void displaySingleLink(SingleNode *SingleHead)
{
while(SingleHead)
{
cout<<SingleHead->i<<endl;
SingleHead=SingleHead->next;
}
}
DoubleNode *DLinkFromSingle(SingleNode *SingleHead)
{
SingleNode *q=SingleHead;
DoubleNode *DoubleHead,*p,*q1;
DoubleHead=NULL;
while(q)
{
p=new DoubleNode;
p->i=q->i;
if(DoubleHead==0)
{
DoubleHead=p;q1=p;q1->pre=NULL;
}
else
{
q1->next=p;p->pre=q1;
q1=p;
}
q=q->next;
}
p=NULL;
if(DoubleHead)q1->next=NULL;
cout<<"双链表已经形成!"<<endl;
return DoubleHead;
}
void freeDoubleLink(DoubleNode *DoubleHead)
{
DoubleNode *p=DoubleHead;
while(p)
{
DoubleHead=p->next;
delete p;
p=DoubleHead;
}
cout<<"双链表已经形销毁!"<<endl;
}
void displayDoubleLink(DoubleNode *DoubleHead)
{
DoubleNode *p=DoubleHead;
while(p) //此处...p或是p!=NULL都是一样.
{
cout<<p->i<<endl;
if(p->next==NULL)break; //此处.....若改为if(p->next)竟然第一次执行时就break?????
p=p->next;
}
while(p)
{
cout<<p->i<<endl;
if(p->pre==NULL)break; //此处.....若改为if(p->pre)竟然第一次执行时就break?????
p=p->pre;
}
}
int main(int argc,char *argv[])
{
SingleNode *sn=createSingleLink();
displaySingleLink(sn);
DoubleNode *dn=DLinkFromSingle(sn);
displayDoubleLink(dn);
freeSingleLink(sn);
freeDoubleLink(dn);
system("PAUSE");
return 0;
}
如上:
就是今天回一网友的贴子,我编了个试试.
也就是变单链表为双链表.
也就是说,NULL到底是什么?
是0?
还是指向为空?
像上面while的地方,最后跳出时那个p我已经设成了NULL(在createSingleLink或是createDoubleLink里).但是,这个设不设没有太大关系吧.
后面if里面的,肯定是指向为空.这个就不等0了吗?
对了,我这个在DEVC++里通过.我在VC++下面compile通过.LINK时死机!!!!!!!!一直显示"请输入数据以-1结束"为什么?是我VC++没装好,还是别的有问题了?