先來看普通鍊錶的**是如何建立的
首先需要乙個節點類,命名為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...