Code Bye

链表的尾插法一定需要声明头指针以及另外两个指针吗

例如下面图片红色区域,本人觉得完全可以改写为如下(也就是不去使用s指针):
while (c != 0)
{
r->next = (node *)malloc(LEN);
r->next->coef = c;
r->next->exp = e;
r = r->next;
printf(“coef:”);
scanf(“%d”, &c);
printf(“exp: “);
scanf(“%d”, &e);
}
r->next = NULL;
解决方案:5分
不论头插法,尾插法,都不需要额外的指针。
不过怎么样实现,看你本人想怎么做。
解决方案:20分
假设头结点Head已经建好,并且
genNode(data);返回新创建的节点,数据为data;不初始化next指针。
input();返回 输入数据
isValid(data) 返回数据能否有效
头插法
 Head ->next =NULL;
data =input();
while(isValid(data)){
p=genNode(data);
p->next =Head->next;
Head->next =p;
data =input();
}

尾插法

Head ->next =NULL;
p = Head;
data =input();
while(isValid(data)){
p->next  = genNode(data);
p = p->next;
p->next  = NULL;
data =input();
}
解决方案:5分
插入节点总是找到待插位置的前驱。
解决方案:10分
在还没有正确实现功能之前,临时变量越多逻辑越清晰。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明链表的尾插法一定需要声明头指针以及另外两个指针吗