/*
题目:在带头结点的单链表中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法以实现上述操作。
出自:王道p38.2
*/
//思路:从前往后遍历,遇到目标值,申请辅助结点记录,指针后移,删除辅助结点,为了防止断链,每次检查的是当前节点的下一结点,也可避免记录前驱节点,带头结点的单链表用这种方法很适合。
//宏定义
#define ElemType int
//单链表定义
typedef struct LNode{
ElemType val;
struct LNode*next;
}*LinkList,LNode;
[注] 上述宏定义和结构体定义是答题时要写的答案,并不是代码实现时的定义,代码实现稍有不同,感兴趣可去“help.h”中查看。
//实现函数
void WD38_2(LinkList_n L,int x){ //从头至尾遍历,遇到就删除即可
if(!L) return;
LNode_n*p=L;
while(p->next){