反轉部分單向鍊錶

2021-09-24 13:31:08 字數 585 閱讀 7449

給定乙個單向鍊錶的頭節點head,以及兩個整數from和to,在單項鍊表上把第from個節點到to個節點的這一部分進行反轉。

例如:1->2->3->4->5->null from=2,to=4

調整結果為1->4->3->2->5->null

再如1->2->3->null from=1,to=3

調整結果為3->2->1->null

1:要求時間的複雜度為o(n),額外的空間複雜度為o(1)

2:如果不滿足1<=from<=to<=n,則不用調整

1:先判斷是否滿足1<=from<=to<=n,如果不滿足,直接返回原來的頭節點

2:找到第from-1個節點pre和第to+1個節點pos,pre即是要反轉部分的前乙個節點,pos即是反轉部分的後乙個節點,把反轉的部分先反轉,然後正確的連線pre和pos。

3:如果pre為null,說明反轉的部分是含有頭節點的,則返回的新的節點,即是反轉前的最後乙個節點,也是反轉後的第乙個節點,如果pre不為null,則直接返回舊的頭節點。

反轉部分單向鍊錶

說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 反轉部分單向鍊錶 這一題目的c 復現。本文只包含問題描述 c 的實現以及簡單的思路,不包含解析說明,具體的問題解析請參考原書。感謝左程雲老師的支援。題目 給定乙個單向鍊錶的頭節點 head,以及兩個整數 from 和 to,在單向鍊錶上把...

反轉部分單向鍊錶

給定乙個單向鍊錶的頭節點head,以及兩個整數from和to,在單向鍊錶上把第from個節點到第to個節點這一部分進行反轉。例如 1 2 3 4 5 6 null,from 3,to 5 調整結果為 1 2 5 4 3 6 null 1 2 3 null,from 1,to 3 調整結果為 3 2 ...

005 反轉部分單向鍊錶

package com.my.util 單向鍊錶節點 public class singlenode package com.my.suanfa import com.my.util.singlenode 反轉部分單向鍊錶 時間複雜度o n 額外空間複雜度o 1 public class solut...