三九宝宝网宝宝教育教学论文

C语言的单向链表删除节点的问题

01月06日 编辑 39baobao.com

伪代码:

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

}

代码就是这样的。很简单。这段代码并不能编译,你加上类型就好了。我强调的是方法。

推荐阅读
图文推荐