鍊錶建立,單鏈表反轉,逆序列印等等

2021-10-05 02:21:13 字數 2975 閱讀 7923

先來看普通鍊錶的**是如何建立的

首先需要乙個節點類,命名為node,這裡的屬性我設定的為public,如果有序要也可以設定為private,並提供響應的getter和setter方法即可:

class

node

public

node()

@override

public string tostring()

';}}

有了節點類,我們還需要乙個鍊錶類linkedlist,用來寫增刪改查等等一些方法:

class

singlelinkedlist

//不考慮編號順序時新增資料

public

void

add(node node)

temp = temp.next;

//每迴圈一次讓指標向後挪動一位

} temp.next = node;

//讓當前指標指向新增的節點

}//考慮編號順序時新增資料

public

void

addorderby

(node heronode)

if(temp.next.node > heronode.node)

else

if(temp.next.node == heronode.node)

temp = temp.next;}if

(flag)

else

}//遍歷鍊錶的方法

public

void

list()

node temp = head.next;

while

(true

) system.out.

println

(temp)

; temp = temp.next;}}

//刪除乙個節點的方法

public

void

delete

(node node)

if(temp.next.node == node.node)

temp = temp.next;}if

(flag)

else

}//修改節點的方法

public

void

update

(node newnode)

boolean flag =

false

;while

(true)if

(temp.node == newnode.node)

temp = temp.next;}if

(flag)

else}}

//測試類我就不再寫了

求單鏈表有效節點的個數

查詢單鏈表中倒數第k個節點

單鏈表的反轉

逆序列印煉表中的節點

//直接寫方法了

/** * 獲取鍊錶中有效節點的個數

* @param head 傳入乙個頭節點

*/public

static

intgetlength

(node head)

int length =0;

//用來統計有效節點的個數

while

(true

)else

break;}

return length;

}

//獲取單鏈表中倒數第k個節點

public

static node getnode

(node head,

int k)

//這裡比較巧妙的方法是直接呼叫上面獲取有效節點個數的方法

int size =

getlength

(head);if

(k <=

0|| k > size)

for(

int i =

0; i <

(size - index)

; i++)}

return temp;

}

//單鏈表的反轉

public

void

reverselinkedlist

(node head)

node temp = head.next;

node next = null;

node reversehead =

newnode()

;//建立乙個新的鍊錶

while

(temp != null)

head.next = reversehead.next;

}

上個**釋一下單鏈表的反**

//逆序列印煉表中的節點

//通過棧的先進後出的性質把鍊錶中的資料順序壓入,再順序彈出即可

public

static

void

reverseorder

(node head)

//建立乙個棧物件

stack

nodes =

newstack

<

>()

; node temp = head.next;

while

(temp != null)

//進行出棧操作

while

(nodes.

size()

>0)

}

逆序列印單鏈表

二叉樹的操作 逆序列印單鏈表 void printslistfromtail2head pnode phead 逐個遍歷 每次從頭開始遍歷查詢到最後乙個要列印的元素 這個方法有點繁瑣,可以進行優化 void printslistfromtail2head pnode phead printf 逆序後...

演算法 逆序列印鍊錶

輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個 list 借助棧先入後出的特性,可以很輕鬆地實現 public arraylist printlistfromtailtohead listnode listnode arraylist list newarraylist while stack.isem...

2 22逆序列印鍊錶

public class test node head create arr show head 逆序列印 public static void show node head stack s newstack 入棧 for node p head.next p null p p.next 出棧 wh...