劍指offer JZ15反轉鍊錶

2021-10-12 21:52:58 字數 858 閱讀 8978

題目描述:

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。

演算法思想:

因為是將鍊錶進行反轉,因此主要的方法是先定義乙個頭結點,然後將不斷新建節點,將原鍊錶節點從前往後依次遍歷,取出每乙個節點的值,然後依次斷開新建節點與後面節點的連線,並將後面的鍊錶的頭結點儲存在乙個臨時變數中,這時將從原煉表中取出的節點與頭結點和後面的鍊錶相連線,當原鍊錶遍歷完成後,新的鍊錶也建立完成,這時的鍊錶就是反轉後的鍊錶。

源**:

public class solution

listnode head2=new listnode(0);

listnode temp=head.next;

listnode temp2=head;

head2.next=new listnode(head.val);

while(temp!=null)

return head2.next;

}}出錯點:

public class solution

listnode head2=new listnode(0);

listnode temp=head.next;

listnode temp2=head;

head2.next=head;//這裡將原鍊錶的頭結點當做了新建煉表頭結點的下乙個節點,導致當新鍊錶生成後還會再遍歷一遍原來的鏈           表,因此定義的時候,是將原鍊錶的頭結點值付給新建的頭結點,而不是直接將原鍊錶的頭結點賦值給新建的頭結點。

while(temp!=null)

return head2.next;

}}

劍指offer JZ15 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。非常基礎的鍊錶題,幾乎所有學習鍊錶的程式設計師都會在一開始學習這個演算法。唯一需要注意的是,當while迴圈結束時 也即是curnode到達了鍊錶尾 此時curnode.next並沒有被指向lastnode,需要在後面加上。class solution 返...

劍指offer JZ15反轉鍊錶

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32m,其他語言64m 熱度指數 824838 本題知識點 鍊錶 輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。function listnode x function reverselist phead let head phead let n...

劍指offer JZ15 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。思路 1.利用乙個棧,注意反轉後的最後乙個元素需要把它的next置為空,否則會無限迴圈 struct listnode class solution listnode p phead listnode temp null while note.empty ...