演算法題009 反轉單鏈表 by java

2021-08-31 18:22:23 字數 1173 閱讀 2331

反轉單鏈表,可以使用迭代或者遞迴的方法

具象化反轉單鏈:

反轉前:

反轉中:

反轉後:

(ps:上述搬運自 鏈表面試題(一):反轉鍊錶的演算法實現)

以上就是每乙個節點都需要做的事情了,不管是迭代的方法還是遞迴的方法都是這樣的步驟。 然而需要考慮的還不止這麼多,比如第乙個節點的上乙個節點的處理,以及方法結束時的返回值的處理。

package algorithm9;

import algorithm6.listnode;

public

class

algorithm9

/**方法一:迭代

* 注意點:tempnext == null 時,說明已經迭代到最後乙個節點了,這時為headnode賦值

* @param listnode

* @return

*/public

static listnode reverselistnode

(listnode listnode)

return headnode;

}/**方法二:遞迴

* 注意點:listnode.next == null 時,說明已經迭代到最後乙個節點了

* 與迭代方法不同的是,這裡沒有固定區域性變數來記錄頭結點,所以就需要將整個鍊錶串成乙個完整的鍊錶

* @param listnode

* @param pre

* @return

*/public

static listnode reverselistnode2

(listnode listnode, listnode pre)

listnode tempnext = listnode.next;

listnode.next = pre;

pre = listnode;

listnode = tempnext;

return

reverselistnode2

(listnode, pre);}

public

static listnode getlistnode1()

}

演算法題 反轉單鏈表

時間限制 1秒 空間限制 32768k 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。解法一.迴圈反轉鍊錶 非遞迴法 整體思路就是,從原鍊錶的頭部乙個乙個取節點並插入到新鍊錶的頭部 p始終指向要反轉的結點 newhead 指向反轉後的首結點 每反轉乙個結點,把p結點的next指向newhead,ne...

單鏈表反轉演算法

struct listnode 想到兩種方法 想法是構建乙個新的單鏈表,然後遍歷原來的單鏈表,每遍乙個就把它插入到最新的單鏈表的開頭,下面是 struct listnode reverselist struct listnode list temp list last null while temp...

C 演算法 反轉單鏈表

反轉單鏈表,我使用了兩種方法,不過他們都很相近。宣告 class clist 宣告反轉單鏈表函式 void reversesll clist clist prenode nullptr void csinglelinkedlist reversesll clist node,clist prenod...