严蔚敏数据结构c语言版 习题上自己做了跟答案不太一样 不知道对不对

来源:百度知道 编辑:UC知道 时间:2024/06/15 05:10:26
习题2.20
已知线性表中的元素以值递增有序排列,并以带头节点的单链表作存储结构,试写一算法,删除表中所有值相同的多余元素,同时释放被删节点空间。
这是我的算法跟提供的答案不太一样 下面的算法对吗?
Status Delete_equal(LinkList &L)
{
p=L->next;
while(p->next)
if(p->data == p->next->data)
{
q=p->next;
p->next=q->next;
free(q);
}
else p=p->next;
}

我觉得没什么问题。
检查当前节点:
如果跟后面节点相等,删除后面的节点;否则检查后面的节点,直到最后一个节点。

我也觉得没什么问题

你只是思路跟书上的答案刚好反过来

这样算法反而简单了

1. 如果是C语言, LinkList &L 是不对的,应该是 LinkList *L
2. 变量p, q没有声明
3. 函数没有返回值

从算法上看, 都没啥问题。