例如下面图片红色区域,本人觉得完全可以改写为如下(也就是不去使用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分
在还没有正确实现功能之前,临时变量越多逻辑越清晰。