190427打卡 反轉部分單向鍊錶

2021-09-19 23:33:25 字數 1046 閱讀 2357

題目描述:

給定乙個單向鍊錶的頭結點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.如果鍊錶的長度為n,時間複雜度要求o(n),額外空間複雜度要求為o(1)

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

思路:注意反轉的順序,比如上述的第乙個例子中,先把2和4的下一節點5連線,然後再依次把3和2連線,把4和3連線,對於第二個例子,同樣,先把1和3的下乙個節點null連線,然後依次把2和1連線,把3和2連線,這是兩個例子的共同特點,有所不同的是,第一點:第乙個例子還需要將1和已經反轉好的鍊錶進行連線 ;第二點:兩者返回的頭結點不同,對於第乙個例子來說直接返回頭結點head就ok,對於第二個例子來說需要返回是3這個節點

public

class

code_012_reversepart

}public

static node reversepart

(node head,

int from,

int to)

if(from > to || from <

1|| to > count)

cur = fromprev == null ? head : fromprev.next;

node prev = tonext;

node next = null;

while

(cur != tonext)

//頭結點不用反轉的情況,將不用反轉的鍊錶和已經反轉好的鍊錶進行連線

if(fromprev != null)

//頭結點需要反轉的情況,返回新的頭結點

return prev;//}

}

反轉部分單向鍊錶

給定乙個單向鍊錶的頭節點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 nu...

反轉部分單向鍊錶

說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 反轉部分單向鍊錶 這一題目的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 ...