题目
在带头结点的单链表中,删除所有值为x的结点,并且释放空间,假设值为x的结点不唯一,试编写算法实现以上操作
代码设计思路
这里我们借助三个指针,一个进行寻找一个确定标准一个寻找准确位置,他们初始化指针pre指向头结点、p指向头结点后面第一个节点。
实现代码
void Del_x(LinkList& L, ElemType x)
{
LNode* pre = L, * p = L->next, * q;//定义指针并且将其初始化
while (p != NULL) {
if (p->data == x)
{
q = p;
p = p->next;
pre->next = p;
free(q);//删除q所指向元素
}
else
{
pre = p;
p = p->next;
}
}
}