回 帖 发 新 帖 刷新版面

主题:有关尾插法建立单链表的问题

以下是我们的数据结构教材上的尾插法建立单链表:
void CreateListR(LinkList &L,ElemType a[],int n)
{
LinkList *s,*r;int i;
L=(LinkList *)malloc(sizeof(LinkList));                   /*创建头结点*/
L->next=NULL;
r=L;                                                      /*r始终指向终端结点,开始时指向头结点*/
for(i=0;i<n;i++)
{s=(LinkList*)malloc(sizeof(LinkList));                   /*创建新结点*/
s->data=a[i];
r->next=s;                                                /*将*s插入*r之后*/
r=s;
}
r->next=NULL;                                             /*终端结点next域置为NULL*/
}
小弟不明白的是头结点L的next域为空,那建立的单链表不也为空吗?总觉得程序有点问题,希望高手能帮忙解释一下

回复列表 (共2个回复)

沙发

L的指针域置空,的确是空表啊,有什么奇怪的。

板凳

上面的程序是从数组里读取数据元素作为单链表的数据域的,程序运行以后就不再是空表了,而是有n个元素的单链表了
至于为什么不是空链表,我已经知道了
由于开始的时候*r已经指向了头结点,所以,L的头结点已经不再是*L,链表L的头结点next域也不再是NULL
不知道我这么理解是不是真确的

我来回复

您尚未登录,请登录后再回复。点此登录或注册