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 }