一、鍊錶為什麼存在?
1).陣列的缺陷
無序列表:搜尋效能差,有序列表:插入效率低,並且兩個的刪除效率也很低,陣列在建立後大小就固定了,設定的過大會造成記憶體浪費,過小又不能滿足資料量的儲存
2).解決上訴一部分問題
二、鍊錶簡介
1).鍊錶通常由一連串節點組成,每個節點包含任意的例項資料(data fields)和一或兩個用來指向上乙個/或下乙個節點的位置的鏈結("links")
三、有什麼優點?
1.克服陣列需要預先知道資料大小的缺點
2.充分利用計算機記憶體空間,實現靈活的記憶體動態管理
四、缺點
1.失去了陣列隨機讀取的優點
2.由於增加了節點的指標域,空間開銷比較大
五、單向鍊錶
2.簡介
③刪除**:
④**實現單鏈表思路
1)定義乙個類,包含object data資料資訊欄位和 節點類類名 next資訊字段
2)編寫功能煉表頭新增元素
3)在煉表頭刪除元素
4)查詢指定元素,返回找到的節點node找不到則返回null
5)刪除指定的元素,刪除成功返回true
6)判斷鍊錶是否為空
7)顯示節點
⑤**1.節點類(node)
/**
* @program: linked_list01
* @description:
* @author: mr.liu
* @create: 2018-11-04 21:10
**/public class node
public node getnext()
public void setnext(node next)
public object getdata()
public void setdata(object data)
}
2.單鏈錶類(singlelinkedlist)
public class singlelinkedlist
//3.鍊錶新增頭節點
public object addhead(object obj)else
size++;
return obj;
}//4.刪除煉表頭結點
public object deletehead()
//5.查詢指定元素,找到了返回節點,沒有返回null;??
public node find(object obj)else
tempsize--;
}return null;
}//6.刪除指定的元素,刪除成功返回true
public boolean delete(object value)
node previos=head;
node current=head;
//獲取節點資訊
while(value!=current.getdata())else
}//刪除節點 1.如果是頭節點 2.不是頭節點
if (current==head)else
return true;
}//7.判斷鍊錶是否為空
public boolean isempty()
//8.顯示節點資訊
public void display()
while(tempsize>0)else if(node.getnext() == null)else
node = node.getnext();
tempsize--;
}system.out.println();
}else }}
3. 測試
public class main
}
4.結果:
⑥雙端鍊錶
單項鍊表,我們如果想在尾部新增乙個節點,那麼必須從頭部一直遍歷到尾部,找到尾節點,然後在尾節點後面插入乙個節點。這樣操作很麻煩,如果我們在設計鍊錶的時候多個對尾節點的引用,那麼會簡單很多
⑦雙向鍊錶:
單向鍊錶只能從乙個方向遍歷,那麼雙向鍊錶它可以從兩個方向遍歷
頭指標:
頭指標具有標識作用,故常用頭指標冠以鍊錶的名字。
無論鍊錶是否為空,頭指標均不為空。頭指標是鍊錶的必要元素。
頭結點:
頭結點是為了操作的統一與方便而設立的,放在第乙個元素結點之前,其資料域一般無意義(當然有些情況下也可存放鍊錶的長度、用做監視哨等等)。
結點的存在使得空鍊錶與非空煉表處理一致,也方便對鍊錶的開始結點的插入或刪除操作。
首元結點也就是第乙個元素的結點,它是頭結點後邊的第乙個結點。
頭結點不是鍊錶所必需的。
資料結構 鍊錶
鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...
資料結構 鍊錶
鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...
資料結構 鍊錶
一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...