資料結構 鍊錶

2021-08-31 01:24:26 字數 2895 閱讀 6061

一、鍊錶為什麼存在?

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...