题目:
设计一个递归算法,删除不带头结点的单链表L中所有值为X的结点。
算法思想:设f(L,x)的功能是删除以L为首结点指针的单链表中所有值等于X的结点,显然有f(L->next,x)的功能是删除以L->next为首结点指针的单链表中所有值等于X的结点。
方法代码如下:
void Del_x_3(Linklist &L,ElemType x){
//递归实现在单链表L中删除值为X的结点
LNode *p; //p指向待删除结点
if(L==NULL) //递归出口
return;
if(L->data==x){ //若L所指结点的值为X
p=L; //删除*L,并让L指向下一结点
L=L->next;
free(p);
Del_x_3(L,x); //递归调用
}
else //若L所指结点的值不为X
Del_x_3(L->next,x); //递归调用
}