劍指Offer 15 反轉鍊錶

2022-04-05 01:21:35 字數 702 閱讀 8399

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。例如鍊錶為1->2->3->4 反轉後為1<-2-<3-<4

節點定義如下:

public

class

listnode

}

思路一:

利用三個指標是實現鍊錶反轉

public

class

solution

listnode pre = null; //

當前節點的前乙個節點,也就是新鍊錶的頭結點

listnode next = null; //

當前節點的下乙個節點

while( head != null

)

return

pre;

}}

思路二:

利用遞迴的思想,假設鍊錶為1->2->3->4->5先迭代到鍊錶末尾5,然後從5開始依次反轉整個鍊錶

head.next.next = head;是指使當前節點的下乙個節點指向自己

head.next = null斷開與下乙個節點的聯絡,完成真正的反序操作

public

class

solution

}

劍指offer 15 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。反轉鍊錶只需改變鏈結方向,改變方向時需要將原本指向後乙個結點的鏈結方向指向前乙個結點,因此需要記錄下三個結點。include using namespace std struct listnode class solution listnode fron...

劍指Offer 15 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。coding utf 8 class listnode def init self,x self.val x self.next none class solution 返回listnode def reverselist self,phead writ...

劍指offer 15 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。include using namespace std struct listnode class solution class solution1 return pfront1 else pnode next new listnode num int ...