鍊錶 鍊錶反轉I

2021-07-25 11:18:36 字數 2435 閱讀 4961

package com.hnust.reversal;

public

class listnode

public

listnode(int

value, listnode next)

@override

public string tostring()

}

我們可以通過把鍊錶中鏈結節點的指標反轉過來,從而改變鍊錶的方向,以下兩種演算法是其實現。還有一種方法就是通過 棧 來實現:從頭到尾遍歷鍊錶,依次將鍊錶元素壓入棧中,然後依次彈棧,從而實現鍊錶的反轉。1)三個指標變數:

pre:前驅結點

p:當前結點

next:下乙個結點

2)關鍵的四個步驟:
next = p.next;//將當前結點的下乙個結點,用next存起來

p.next = pre;//將當前結點的next指標指向前驅結點pre(反轉單個結點)

pre = p;//把p作為前驅結點(即 將pre結點往後移動一位)

p =next;//把next作為當前結點(即將p結點往後移動一位)

3)反轉圖示:

1)三個指標變數:

p:當前結點

tatil:尾部結點

2)
遞迴處理next

next.next=p;

返回尾部結點

3)反轉圖示:

/** * 反轉鍊錶

*@author administrator

* */

public

class

reversal

system.out.println();

}//將陣列轉換成鍊錶

public listnode arraytolist(int array)

return head.next;

}/**

* 反轉鍊錶(非遞迴演算法)

* */

public listnode reverselist(listnode head)else

head.next = null;//迴圈結束之後,去掉鍊錶環

//返回前驅結點pre,作為新的頭結點(因為while迴圈結束的條件是p==null,所以根據最後一次的迴圈得出 最後只有

//pre是指向最後乙個結點的,所以將pre作為新的頭結點)

return pre;}}

/*** 遞迴方法,時間複雜度和空間複雜度都是o(n)

*/public listnode recursive(listnode p)else

}public listnode reverselistrecursive(listnode head)else

}@test

public

void

test01();

listnode head = arraytolist(array);

printlist(head);

listnode newhead =reverselist(head);

printlist(newhead);

}@test

public

void

test02();

listnode head = arraytolist(array);

printlist(head);

listnode newhead =reverselistrecursive(head);

printlist(newhead);}}

通過棧實現鍊錶的反轉

stack

stack

=new

stack

();public listnode reverse(listnode head)

listnode newhead =

null; //新的頭結點

if (!

stack

.empty())

listnode p1 = newhead;

while (!

stack

.empty())

return newhead;

}

鍊錶 反轉鍊錶

問題 兩兩交換鍊錶中的節點 問題 k 個一組翻轉鍊錶 問題鏈結 利用棧先進後出的特性,遍歷鍊錶,將每個結點加入棧中,最後進行出棧操作,先出棧的結點指向臨近的後出棧的結點。definition for singly linked list.struct listnode class solution ...

鍊錶 反轉單向鍊錶

思路 從第二個元素開始。1 刪除當前元素。2 把當前元素放到頭結點位置。其中需要宣告3個變數 headnode 頭結點 prenode 前乙個結點 currentnode 當前結點 具體步驟如圖所示 實現 反轉單鏈表方法實現類 created by liujinjin on 17 1 19.publ...

反轉鍊錶與分組反轉鍊錶

經典的反轉鍊錶,先上 public class listnode public class printlist system.out.println public class reverse public listnode reverse listnode root listnode pre nul...