《数据结构与算法》--线性表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,是否正确?
求小甲鱼或者其他鱼油帮忙解惑。 看漏代码了,for循环结束后有r->next = NULL。
页:
[1]