線性表的鏈式儲存結構

2021-08-11 06:35:37 字數 2073 閱讀 9422

順序儲存結構的缺點:插入和刪除時需要移動大量元素

鏈式儲存結構的特點:用一組任意的儲存單元儲存線性表的資料元素

資料結構

儲存分配方式

時間效能

空間效能

順序儲存結構

用一段連續的儲存單元一次儲存線性表的資料元素

查詢:o(1) 插入刪除:o(n)

需要預分配儲存空間,分大了浪費,分小了易發生上溢

單鏈表結構

用一組任意的儲存單元存放線性表的元素

查詢:o(n) 插入刪除:o(1)

動態調整

1、定義介面

package com.stucture.list;  

/**

* 線性表順序儲存結構的介面

* 指的是用一段位址連續的儲存單元一次儲存線性表的資料元素

* @classname: isqlist

*/

public inte***ce ilist

2、定義節點類

package com.stucture.list.linklist;  

/**

* 鍊錶中的結點

* @classname: node

* @author 小學徒

* @date 2013-2-27

*/public

class node

public

void

setdata(t data)

public nodegetnext()

public

void

setnext(nodenext)

}

3、實現鍊錶和基本操作

package com.stucture.list.linklist;  

import com.stucture.list.ilist;

/**

* 單鏈表

* @classname: linklist

*/public

class linklistimplements ilist

//獲取元素

public t getelem(int loc)

n = n.getnext();

j++;

} return

null;

} //插入元素

public boolean insertelem(int loc, t t)

if(head == null && loc == 1) else

if(head != null && loc == 1) else

nodetempnode = new node(); //生成乙個新的結點

tempnode.setdata(t);

tempnode.setnext(n.getnext()); //將n的後繼結點賦值給新的結點的後繼

n.setnext(tempnode);

length++;

} return

true;

} //刪除元素

public t deleteelem(int loc)

t old;

if(head != null && loc == 1) else

old = n.getnext().getdata();

n.setnext(n.getnext().getnext());

} length--;

return old;

} public nodegethead()

public

void

sethead(nodehead)

public

intgetlength()

public

void

setlength(int length)

}

線性表的順序儲存結構:

線性表的鏈式儲存結構

線性表的鏈式儲存結構 順序儲存結構不足的解決辦法 缺點 最大的缺點就是插入和刪除時需要移動大量元素。為了表示每個資料元素 ai與其直接後續資料元素 ai 1 之間的邏輯關係,對資料元素 ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後續的資訊。我們把儲存資料元素資訊的域稱為資料域,把儲存...

線性表的鏈式儲存結構

線性表的鏈式儲存結構,雙向鍊錶實現 package 線性表 public class dulinklist public node t data,node prev,node next 儲存該鍊錶的頭節點 private node header 儲存該鍊錶的尾節點 private node tail...

線性表的鏈式儲存結構

用自己的話來說就是和線性表一樣,只不過多了後邊可以儲存的位置 n個這樣的結點就是鍊錶如圖 注意 單鏈表指的是單一方向的鍊錶,只包含乙個指標域,只能從左到右,不能從右到左 頭節點 頭節點就是鍊錶中第乙個結點,它有真實頭節點和虛擬頭節點 真實頭節點就是第乙個結點用於儲存資料 虛擬頭節點第乙個結點不許儲存...