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 }