鱼C论坛

 找回密码
 立即注册
查看: 3366|回复: 1

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

[复制链接]
发表于 2017-9-17 08:14:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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,是否正确?

求小甲鱼或者其他鱼油帮忙解惑。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-9-17 08:32:14 | 显示全部楼层
看漏代码了,for循环结束后有  r->next = NULL。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 13:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表