谁能帮忙看下这个链表问题?

来源:百度知道 编辑:UC知道 时间:2024/05/11 13:20:14
head=(NODE *)malloc(sizeof(NODE));
head->code=1;
head->next=head;
for(i=n;i>1;--i)
{
p=(NODE *)malloc(sizeof(NODE));
p->code=i;p->next=head->next;head->next=p;
}
书上说这是用尾插法创建的一个结点为n的单循环链表,但是为什么我没看出来?我总感觉这个程序是错的,谁能告诉我这是不是错的?

这时对的

开始结点为
1->1

然后从n开始
这时这么运作的,
head = 1->1
p = n->null
p->next = head->next => p = n->1
head->next = p => head = 1->n->1
下次循环
head = 1->n->1
p = n-1->null
p->next = head->next => p = n-1->n->1
head->next = p => head = 1->n-1>n->1

看出来了吧,链表以以下的顺序进化着
1->n->1
1->n-1>n->1
1->n-2>-n-1->n->1 直到 1->2->3...->n->1