完整**及詳細的注釋如下:
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...