問題:兩兩交換鍊錶中的節點
問題:k 個一組翻轉鍊錶
問題鏈結
利用棧先進後出的特性,遍歷鍊錶,將每個結點加入棧中,最後進行出棧操作,先出棧的結點指向臨近的後出棧的結點。
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
listnode *list =
newlistnode(0
);//增加乙個頭節點
listnode *tail = list;
while
(!s.
empty()
) tail-
>next =
null
;//tail是反轉後的鍊錶的最後乙個節點
return list-
>next;
//返回反轉後的鍊錶}}
;
遍歷鍊錶,用pre表示前乙個結點,cur表示當前結點,遍歷一遍即可
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
return pre;
//返回新的頭節點}}
;
list reverse3(list list)表示將單鏈表 list 進行反轉並返回新鍊錶的頭節點,遞迴考慮,那麼reverse3(list->next)的作用就是將list結點之後的鍊錶進行反轉,因此我們只需將反轉後的鍊錶的最後乙個結點(也就是list->next)指向list,並將list指向null,即可。
};鏈結
};問題鏈結
文章開頭是反轉整個鍊錶,這裡是每k個節點進行反轉操作,為方便操作新增乙個頭節點,遍歷鍊錶,用begin記錄開始遍歷的位置,然後向後遍歷k-1個節點,進行斷開鍊錶操作,然後對這部分呼叫反轉整個鍊錶的函式,並把它鏈結到反轉完成的鍊錶中,重複這個步驟,直到遍歷完。
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
else
}//begin指向最後一段不足k的開始節點或者指向為null
tail-
>next = begin;
return list-
>next;
}//將begin到end的之間的鍊錶進行反轉
listnode*
reverse
(listnode *head)
};
鍊錶 鍊錶反轉I
package com.hnust.reversal public class listnode public listnode int value,listnode next override public string tostring 我們可以通過把鍊錶中鏈結節點的指標反轉過來,從而改變鍊錶的...
鍊錶 反轉單向鍊錶
思路 從第二個元素開始。1 刪除當前元素。2 把當前元素放到頭結點位置。其中需要宣告3個變數 headnode 頭結點 prenode 前乙個結點 currentnode 當前結點 具體步驟如圖所示 實現 反轉單鏈表方法實現類 created by liujinjin on 17 1 19.publ...
反轉鍊錶與分組反轉鍊錶
經典的反轉鍊錶,先上 public class listnode public class printlist system.out.println public class reverse public listnode reverse listnode root listnode pre nul...