C语言,单向链表 不知道前驱指针,如何删除某一节点。 情况考虑详尽一些!

C语言,单向链表
不知道前驱指针,如何删除某一节点。
情况考虑详尽一些!求助!

伪代码:
if node.age ==30
delete(node)

delete是封装好了的代码

删除一个节点的步骤:
如我有一个链表:A B C D 四个元素
我要删除B,则有
p =A.next
A.next = p.next
free(p)

主要是思想对就行,一定要封装

你这个属于那种在线删除
就是先查找,如果符合条件,就删除。
删除操作,必须知道有删除的节点的前一个节点的地址才行。
那么你应该每次查找的时候不是判断当前节点是否符合要求,而是判断下一个节点。如果符合就按照删除节点的删除来。
删除操作的三部曲:
第一步:保存删除节点的地址
第二步:将删除节点的前一个节点的指针域指向删除节点的下一个
第三部:free 需要删除节点

我现在直接在这里写代码了

void del(head,age)
{
p = head;
while(p)
{
if( p->next && p->next->age == age )//删除操作的三步曲
{
q=p->next;
p->next = q ->next;
free(q);
}//end if
p = p->next;
}//end while
}

代码就是这样的。很简单。这段代码并不能编译,你加上类型就好了。我强调的是方法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-30
单向链表只能从头开始查找。
第2个回答  2018-03-30
不懂呢你发吧经济学计算机课送去哦哦送快递见到你