更新時(shí)間:2022-05-24 11:12:18 來源:動力節(jié)點(diǎn) 瀏覽1425次
鏈表是一種物理存儲單元,是不連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中指針的順序來實(shí)現(xiàn)的。鏈表由一系列節(jié)點(diǎn)組成(鏈表中的每個(gè)元素稱為一個(gè)節(jié)點(diǎn))形式,節(jié)點(diǎn)可以在運(yùn)行時(shí)動態(tài)生成。每個(gè)節(jié)點(diǎn)有兩部分:一個(gè)是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲下一個(gè)節(jié)點(diǎn)地址的指針域。與線性表序結(jié)構(gòu)相比,操作復(fù)雜。
v定義鏈表
/ **
* @作者頭頭 https://www.cnblogs.com/toutou/
* @date 到 2020/11
* @從
* /
public class ListNode {
public int value;
下一個(gè)公共ListNode;
public ListNode( int data){
this .value = data;
}
}
v遞歸實(shí)現(xiàn)
/ **
* @作者頭頭 https://www.cnblogs.com/toutou/
* @date 到 2020/11
* @從
*/
public class ReverseHelper {
public static ListNode reverse(ListNode curr){
if (curr == null || curr.next == null ){
return curr;
}
ListNode temp = curr.next;
ListNode newNode = reverse (curr.next);
temp.next =當(dāng)前;
curr.next = null ;
返回新節(jié)點(diǎn);
}
}
v非遞歸實(shí)現(xiàn)
/ **
* @作者頭頭 https://www.cnblogs.com/toutou/
* @date 到 2020/11
* @從
* /
public class ReverseHelper {
public static ListNode whileReverse (ListNode curr) {
ListNode pre = null ;
ListNode 下一個(gè)= null ;
而(當(dāng)前!= null ){
下一個(gè)= curr.next;
curr.next = pre;
前=當(dāng)前;
當(dāng)前=下一個(gè);
}
返回前;
}
}
v測試結(jié)果
/ **
* @作者頭頭 https://www.cnblogs.com/toutou/
* @date 到 2020/11
* @從
*/
public class App {
public static void main(String[] args) {
ListNode head = new ListNode (0 );
列表節(jié)點(diǎn) tmp = null ;
ListNode cur = null ;
for ( int i = 1; i < 10; i++ ) {
tmp = new ListNode(i);
如果(1 == i){
頭.next = tmp;
}其他{
cur.next = tmp;
}
cur = tmp;
}
// ListNode node1 =ReverseHelper.whileReverse(head);
ListNode node1 = ReverseHelper.reverse(head);
而(節(jié)點(diǎn)1!=空){
System.out.println(node1.value);節(jié)點(diǎn)1 =節(jié)點(diǎn)
1.next ;
}
System.out.println( "OK" );
}
}
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743