算法:删除单链表中值为x的结点
算法思想:定义一个用于遍历的指针p,初始时指向第一个含元素的结点,依次向后遍历单链表,若存在数据域值为x的元素,将其删除。重复以上操作直至遍历完整个链表
源码
typedef struct LNode{ //单链表的存储结构
int data;
struct LNode *next;
}LNode,*LinkList;
bool ElemDelete(LNode &L,int x)
{
if(L->next == NULL) //链表判空
return false;
LNode *p,*q,*prior; //p为遍历节点的指针,q指向值为x的节点,prior指向当前节点的前一个位置
p = L->next; //从头结点之后开始遍历
prior = L;
while(p! = NULL) //遍历链表
{
if(p->data == x) //判断当前结点是否值为x
{
q=p;
prior = p->next;//令当前值为x的结点断开
free(q);
}
else
{
q = p;
p = p->next;
}
}
return true;
}