例如下面图片红色区域,本人觉得完全可以改写为如下(也就是不去使用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;

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) 返回数据能否有效
头插法
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分
在还没有正确实现功能之前,临时变量越多逻辑越清晰。