|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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,是否正确?
求小甲鱼或者其他鱼油帮忙解惑。 |
|