學習《資料結構與演算法》筆記02 連結串列
阿新 • • 發佈:2019-07-19
連結串列
陣列結構的缺點:
1.陣列的大小是固定的;
2.無序陣列中,查詢效率很低;查詢O(N),插入O(1)
3.有序陣列中,插入效率又很低;查詢O(logN)使用二分法,提高查詢效率,減少查詢次數logN=log2(N)*3.322;插入O(N)
4.不管是哪種陣列,刪除操作效率都很低。O(N)
本章將學習單鏈表、雙端連結串列、有序連結串列、雙向連結串列和有迭代器的連結串列。
鏈結點(Link)
在連結串列上,每一個數據項,都被包含在一個“鏈結點”中。一個鏈結點是某個類的物件,這個類可以叫做Link,Link類是連結串列類是分開的。每個鏈結點物件,都包含一個對下一個鏈結點引用的欄位(通常叫next)。但是連結串列本身的物件中有一個欄位指向對第一個鏈結點的引用。
我們通過java程式碼來建立Link類:
public class Link {
private int iData; // int型別資料
private double dData; // double型別資料
private Link next; // 下一個link物件的應用,記憶體地址
}
單鏈表
package linkedlist;
/**
* @author yangjian
* @date created in 11:34 2019/07/19
*/
public class LinkList {
private Link first;
public void LinkList(){
first = null;
}
public boolean isEmpty(){
return (first == null);
}
public void insertFirst(int id, double dd){
Link newLink = new Link(id, dd);
newLink.next = first;
first = newLink;
}
public Link deleteFirst(){
Link temp = first;
first = first.next;
return temp;
}
public void displayLinkList(){
System.out.println("= displayLinkList begin :");
Link current = first;
while(current != null){
current.displayLink();
current = current.next;
}
System.out.println("= displayLinkList end");
}
}
class LinkListApp{
public static void main(String [] args){
LinkList linkList = new LinkList();
linkList.insertFirst(1,10.0);
linkList.insertFirst(2,20.0);
linkList.insertFirst(3,30.0);
linkList.insertFirst(4,40.0);
linkList.insertFirst(5,50.0);
linkList.displayLinkList();
}
}