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 }