反轉鍊錶的迴圈方式和遞迴方式

2021-07-04 12:22:29 字數 869 閱讀 7372

出自《劍指offer》第16題。

題目:定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出翻轉後的鍊錶的頭結點。

鍊錶的結點定義:

struct listnode

return preversehead;

}遞迴法:

listnode *reverse(listnode *pprev,listnode *pnode)

listnode * reverselist_recursion(listnode *phead)

定義鍊錶的結構、初始化鍊錶、列印鍊錶中資料。

#includeusing namespace std;

struct listnode

;listnode * initiallist(int arr,int len)

p->m_pnext=null;

listnode *temp=head;

head=head->m_pnext;

delete temp;

return head;

}void printlist(listnode *head)

cout<

清空鍊錶:

void clearlist(listnode * &head)

}

測試程式:

int main()

; int len=sizeof(arr)/sizeof(arr[0]);

cout<

二 單鏈表的反轉 遞迴和迴圈方式實現

單鏈表的建立 列印和釋放見部落格 一 單鏈表的建立 列印和釋放 1.遞迴方式實現單鏈表的反轉 param plist node t 帶頭結點的單鏈表的第乙個有效結點 node t slistrecur node t pfirst node t pnewnode slistrecur pfirst p...

遞迴(鍊錶反轉)

將乙個單鏈表反轉,結果得到的是鍊錶的最後乙個,以及第乙個。確實是反轉了,但是只剩下兩個元素了。public static node reversenode node node node newheadnode reversenode node.getnext node.setnext null ne...

六種鍊錶反轉方式

鍊錶的反轉有很多種玩法,這裡主要介紹 文字原始碼 singlylinkedlistreverse 測試案例 listreversetest 主要原始碼 public int reverse array singlylinkedlist listlj nodelj node listlj.head.n...