初級演算法 翻轉鍊錶

2021-09-29 06:56:13 字數 702 閱讀 7418

反轉乙個單鏈表。

示例:輸入: 1->2->3->4->5->null

輸出: 5->4->3->2->1->null

高階:你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?

思路1:迭代:

思路很簡單 使用三個指標 迴圈使後乙個指向前乙個 再用第三個指標儲存沒有翻轉的剩餘指標的位置

自己敲得程式執行不出結果

class

solution

head=q;

return head;}}

;

找到原因了,因為沒有考慮周全,需要加乙個是否為空的判斷。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

listnode* p=head;

listnode* q=head-

>next;

head-

>next=

null

;while

(q) head=p;

return head;}}

;

思路2:遞迴方法:執行不出來 不懂。

/**

初級演算法 鍊錶 環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸...

經典演算法 鍊錶翻轉

比如說乙個鍊錶先是這樣,40 5 0 60 反過來就應該是 60 0 5 40 函式如下 static void reverse struct node head ref head ref prev 代表著最後乙個 傳進去的引數是煉表頭 原理就是把鍊錶都反過來指,最後乙個指向倒數第二個,方法是通過上...

初級演算法 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?package com.linklist public class ispalindrome5 listnode ...