java實現鍊錶反轉

2021-07-08 09:56:40 字數 1475 閱讀 7712

完整**及詳細的注釋如下:

package com.dhasa.test;

/** * @company dhasa

* @author dl

* */

public class linkedlistdemo

}class linkedlist

public void sethead(node head)

/*** 內部類node

* @author dl

*/private class node }

/*** 頭插法

* @author dl

*/public void addnode(object obj)

/*** 列印鍊錶

* @author dl

*/public void print(node current) }

/*** 反轉鍊錶(迴圈):

* 0、對當前節點進行判斷:當前節點或者其next為空,則可以直接返回。(如果為空,則直接返回null的prenode)

* 1、先儲存當前節點的後續節點(nextnode),否則丟失後續節點無法反轉鍊錶

* 2、將當前節點(current)指向先前節點prenode;

* 3、將當前節點(current)變為先前節點(prenode)

* 4、將之前儲存的後續節點(nextnode)變為當前節點繼續迴圈

* @author dl

*/public node reverselinkedlist(node current)

node nextnode = null;

node prenode = null;

while(current!=null)

return prenode;//最終current變為null時結束迴圈,因此返回的prenode為最終的頭結點(但head引用依然沒變) }

/*** 反轉鍊錶(遞迴)

* @author dl

* 0、對當前節點進行判斷:當前節點或者其next為空,則可以直接返回。

* 1、每次呼叫,先儲存當前節點的後續節點(nextnode),然後將當前節點的next設定為null(則可以看到乙個乙個next被置空的單獨的節點)

* 2、依次呼叫自身,直到最後乙個節點返回。

* 3、每次迴圈的後乙個節點指向當前節點(nextnode->current)

* 4、最終返回新的第乙個節點,也就是迴圈的出口---舊的最後乙個節點

*/public node reverse(node current)

node nextnode = current.next;

current.next = null;

node reverseback = reverse(nextnode);

nextnode.next = current;

return reverseback;

}}

反轉鍊錶(Java實現)

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。解題思路 當對乙個節點的next指標進行反轉時,會造成鍊錶的斷裂,需要儲存當前節點的next節點。實現 public class listnode public class solution listnode newhead null listn...

反轉鍊錶Java

題目 定義乙個鍊錶,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。思路 反轉鍊錶時,為了保證鍊錶不斷開,需要儲存三個引用,指向前一結點的引用,當前結點的引用,指向後一結點的引用。反轉鍊錶 public static listnode reverselist listnode head r...

Java反轉鍊錶

需要記錄原煉表中三個連續的結點 reverse first second。在每輪迭代中,從原煉表中提取結點first並將它插入到逆鍊錶的開頭。同時需要一直保持first指向原煉表中所有剩餘結點的首節點,second指向原煉表中所有剩餘結點的第二個結點,reverse指向結果鍊錶中的首結點。publi...