BK_Z 发表于 2017-9-17 08:14:08

《数据结构与算法》--线性表7 --关于小甲鱼视频中尾插法创建单链表

本帖最后由 BK_Z 于 2017-9-17 08:31 编辑

刚入门C,看了小甲鱼的《数据结构与算法》,在此首先表示感谢,讲的很透彻,易懂。
其中,视频线性表7--关于尾插法创建单链表,代码如下:
       
void CreateListTail(LinkList *L, int n)
{
    LinkList p, r;
    int i;

    srand(time(0));
    *L = (LinkList)malloc(sizeof(Node));
    r = *L;

    for( i=0; i < n; i++ )
    {
      p = (Node *)malloc(sizeof(Node));
      p->data = rand()%100+1;
      r->next = p;
      r = p;               // 备注:初学者可能很难理解这句,重点解释。
    }



这里,是否忘了对(*L)先初始化,即(*L)->next = NULL; r = *L;
因为在遍历时,直接件r赋值给p,但如果未给*L初始化,r应该是不会直线表尾NULL的。


另外,对于代码
    r->next = p;
      r = p;               

初始化时,r->next是指向NULL,这时候插入新节点p,p最后的指向应该是NULL,也就是p->next = NULL;那么,操作代码应该是
        r->next = p;
        p->next = NULL;
对于 r = p,是否正确?

求小甲鱼或者其他鱼油帮忙解惑。

BK_Z 发表于 2017-9-17 08:32:14

看漏代码了,for循环结束后有r->next = NULL。
页: [1]
查看完整版本: 《数据结构与算法》--线性表7 --关于小甲鱼视频中尾插法创建单链表