伪代码:
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
}
代码就是这样的。很简单。这段代码并不能编译,你加上类型就好了。我强调的是方法。