Java單鏈表的簡單實現
阿新 • • 發佈:2018-12-19
連結串列是一種線性結構:一個前驅,一個後繼
特點:1:在記憶體中空間是不連續的(區別於陣列)
2:和陣列相對比,查詢速度慢,插入刪除速度快
內部結構表示(省去get,set方法):
class MyLink {
private Node head; //頭節點
class Node { //節點
private String data; //存放資料
private Node next; //指向下一個節點
}
private int length; //連結串列長度
}
insert(int i) //在指定位置插入元素
public void insert(int index, String data) { if (length < index || index < 0) { System.out.println("插入位置有誤!"); return; } //插入到頭部 if (index == 0) { Node newNode = new Node(data); newNode.next = head.next; head.next = newNode; length++; return; } //插入到尾部 if (length == index) { Node newNode = new Node(data); Node temp = head; while (temp.next != null) { temp = temp.next; } temp.next = newNode; newNode.next = null; length++; return; } Node temp = head; for (int i = 0; i < index; i++) { temp = temp.next; } Node newNode = new Node(data); newNode.next = temp.next; temp.next = newNode; length++; }
del(int i) //在指定位置刪除元素
//刪除節點 public void delete(int index) { if (index <= 0 || index > length) { System.out.println("刪除位置有誤!"); return; } //刪除第一個節點 if (index == 1) { Node temp = head.next; head.next = head.next.next; temp.next = null; length--; return; } //刪除最後一個節點 if (index == length) { Node temp = head; while (temp.next.next != null) { temp = temp.next; } temp.next = null; length--; return; } //刪除最後一個節點 Node temp = head; for (int i = 0; i < index - 1; i++) { temp = temp.next; } temp.next = temp.next.next; length--; }
print() 遍歷連結串列
//遍歷連結串列
public void print() {
if (head.next == null) {
System.out.println("這是一個空表!");
return;
}
Node temp = head;
System.out.print("[head]-> ");
while (temp.next != null) {
System.out.print("[" + temp.next.data + "]-> ");
temp = temp.next;
}
System.out.print("NULL");
System.out.println();
}