链表习题(1)-设计一个递归算法,删除不带头结点的单链表L中全部值为x的结点

 1 /*设计一个递归算法,删除不带头结点的单链表L中全部值为x的结点*/
 2 /*
 3  算法思想:设f(L,x)的功能是删除以L为首结点指针的单链表中全部值等于x的结点,  4  则显然有f(L->next,x)的功能是删除以L->next为首结点指针的单链表中全部值等于x  5  的结点。递归模型以下:  6  终止条件:f(L,x)=不作任何事情 若L为空表  7  递归主体:f(L,x)=删除*L结点;f(L->next,x); 若L->data == x  8  f(L,x)=f(L->next,x) 其余状况  9 */
10 void Del_X_3(LinkList& L, Elemtype x) 11 { 12     LNode* p;        //指向待删除的结点
13     if (L == NULL) 14         return;        //递归出口
15     if (L->data == x) 16  { 17         p = L; 18         L = L->next; 19  free(p); 20  Del_X_3(L, x); 21  } 22     else
23         Del_X_3(L->next, x); 24 }
相关文章
相关标签/搜索