鏈表習題(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 }
相關文章
相關標籤/搜索