反轉鍊錶是一道比較基礎的演算法題啦,但是確實面試高頻演算法題,同學前兩天位元組一面就被問到了這個問題,寫篇博文來記錄一下
首先上題目:
思路都寫在注釋裡啦,所以直接上**啦:
var reverselist = function(head)
return revhead;
};
執行成功截圖:
下面我們來用**的方法具體介紹整個**的實現流程:
初始狀態:
第一次迴圈:
第一次迴圈過後,步驟①:ptemp指向head,步驟②:pcur指向p1,步驟③:ptemp->pnext指向null。
此時得到的prev為:
第二次迴圈:
第二次迴圈過後,步驟①:ptemp指向p1,步驟②:pcur指向p2,步驟③:ptemp->pnext指向head。
此時得到的prev為:
第三次迴圈:
第三次迴圈過後:步驟①:ptemp指向p2,步驟②:pcur指向p3,步驟③:ptemp->pnext指向p1。
此時得到的prev為:
第四次迴圈:
第四次迴圈過後:步驟①:ptemp指向p3,步驟②:pcur指向null,步驟③:ptemp->pnext指向p2。
此時得到的prev為:
至此,單鏈表的逆置完成。
1 單鏈表的倒置輸出
listnode typedef struct lnode lnode 分析 這是一道很有意思的面試題,此題以及此題的變體經常出現在各大公司的面試 筆試中。看到這道題後,第一反應是從頭到尾輸出比較簡單。然後經過分析,這道題有以下幾種解決方法 將鍊錶中節點的指標反轉過來,然後在從頭到尾輸出節點中的值 ...
面試高頻leetcode演算法題
持續更新 def quick rank nums if len nums 1 return nums left,right mid nums 0 for i in nums 1 if i mid else return quick rank left mid quick rank right 給定乙...
單鏈表的base 高頻面試題
鍊錶是有序的列表,但是它在記憶體中是儲存如下 新增 public class singlelinkedlist 定義singlelinkedlist單鏈表 class singlelinkedlistd temp temp.next temp.next heronode 顯示鍊錶 先判斷為空,遍歷後...