吉林大学继续教育:数据结构单链表求救!~

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/10 11:12:41
建立单链表的思想是什么?
下面的一些代码我怎么看都不明白:这个是带有头结点的:
linklist *create_list()
{
char x;
linklist *head,*P,*r;
p=(linklist *)malloc(sizeof(linklist));
head=p;/*这里不太明白*/
p->next=NULL;
r=p;/*这里不太明白*/
printf("建立单链表,输入#号则退出.\n");
scanf("%c",&x);
while(x!='#')
{
p=(linklist *)malloc(sizeof(linklist));
p->data=x;
p->next=NULL;
r->next=p;/*这里不太明白*/
r=r->next;/*这里不太明白*/
scnaf("%c",&x);
}
return(head);
}
各位大哥,怎么学好数据结构,我学得都想撕书了!太难了!不是普通的难!~谢谢!~

主要是明白P、r的作用,在这里P是一个指向新内存单元的linklist类型的指针,r是个临时的指针
p=(linklist *)malloc(sizeof(linklist));//分配内存单元
head=p;//将头指针指向第一个单元
r=p;/*将r指向第一个单元*/
循环中:

p=(linklist *)malloc(sizeof(linklist)); ));//分配下一个内存单元给P
p->data=x;
p->next=NULL;
r->next=p;/*r的next(当前链表尾指针)指向P,链表连接*/
r=r->next;/*r移到新单元*/

PS:鄙视lapulasi这样的剽窃者

通俗一点
p=(linklist *)malloc(sizeof(linklist));//在内存中开辟一个单元,用于存放数据等
head=p;//将头指针指向刚才开辟的那个单元
r=p;/*将r指向上面同一个单元*/
while略

p=(linklist *)malloc(sizeof(linklist)); ));//再开一个内存单元
p->data=x;
p->next=NULL;
r->next=p;/*r的next(当前链表尾指针)指向P,即重新开的单元,以便将链表连接起来*/
r=r->next;/*r指到新开的单元*/