單鏈表翻轉

遞歸方法

         


        p1 和p2指針分別指向當前遞歸子鏈表list1的第一個和第二結點。然後對以p2爲首結點的子鏈表list2進行遞歸逆轉;則p2節點將成爲list2r逆轉後的尾結點,而此時函數返回的頭結點將是原list2的尾結點(如下圖)。最後我們只要把p2的next指向p1就OK了。

 

        node* recursive_Link(node* head)
        {
              if(head == NULL || head->next == NULL)
                    return head;
              node* p1 = head;
              node* p2 = p1->next;  //p2其實記錄的下一步遞歸過程後的尾結點
              head = recursive_Link(p2);
              p2->next = p1;
              p1->next = NULL;

               return head;
         }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章