線性表的鏈式儲存結構

2021-09-27 03:49:09 字數 3093 閱讀 4571

用自己的話來說就是和線性表一樣,只不過多了後邊可以儲存的位置

n個這樣的結點就是鍊錶如圖

注意:單鏈表指的是單一方向的鍊錶,只包含乙個指標域,只能從左到右,不能從右到左

頭節點

頭節點就是鍊錶中第乙個結點,它有真實頭節點和虛擬頭節點

真實頭節點就是第乙個結點用於儲存資料

虛擬頭節點第乙個結點不許儲存資料(我們用的)

鍊錶為空的情況下也有頭結點

注意;頭節點的下一跳為空,該鍊錶為空

頭指標就是乙個變數存的物件位址

尾指標就是指向最後乙個元素的指標

頭插法(進出和棧類似)

進的時候a-b-c出的時候c-b-a

過程:元素c要進,先用結點封裝,把頭節點的下一跳給c,c指向b,把c位址給頭節點

注意:只有鍊錶為空是頭插法尾指標往後移,其他情況尾指標不動

尾插法

過程:先把新元素的位址給尾的下一跳,然後把rear移後

之前

之後

一般插入類似於頭插法

具體**實現

先定義乙個單向鍊錶的結點類

private class node

public node(e data,node next)

public string tostring()

}

private node head;	//指向虛擬頭結點的頭指標

private node rear; //指向尾結點的尾指標

private int size; //記錄元素的個數

``

當然linkedlist也要寫乙個函式

public linkedlist()

public linkedlist(e arr)

獲取元素個數

public int getsize() ``
判斷是否為空

public boolean isempty()
新增乙個元素(重點)

public void add(int index, e e) 

node n=new node(e,null);

if(index==0)

}else if(index==size)else

public void addlast(e e) ``

獲取指定元素

public e get(int index) 

if(index==0)else if(index==size-1)else

return p.data;

} }

獲取表頭表尾元素

public e getfirst() 

public e getlast()

修改某一元素

public void set(int index, e e) 

if(index==0)else if(index==size-1)else

p.data=e;

} }```

注意:修改的時候把上邊查詢的**新增上元素e就ok了

是否包含有某一元素

public boolean contains(e e)
注意:用的是下邊的find

查詢某一元素

public int find(e e) 

node p=head;

while(p.next!=null)

} return -1;

}

用while,如果下乙個為空就跳出迴圈,返回index,走一步就加一所以要加加

移除某一元素

public e remove(int index) 

e res=null; //用來儲存刪掉元素的資料

if(index==0)

}else if(index==size-1)

p.next=null;

rear=p;

}else

public e removelast() ```

刪除指定元素

public void removeelement(e e) 

remove(index);

}``

注意:先用find找到,再用remove移除`清空

public void clear()
tostring

public string tostring() elseelse}}

return sb.tostring();

}

測試的話就和原來一樣,寫乙個main函式,直接驗證就ok

線性表的鏈式儲存結構

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

線性表的鏈式儲存結構

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

線性表的鏈式儲存結構

順序儲存結構的缺點 插入和刪除時需要移動大量元素 鏈式儲存結構的特點 用一組任意的儲存單元儲存線性表的資料元素 資料結構 儲存分配方式 時間效能 空間效能 順序儲存結構 用一段連續的儲存單元一次儲存線性表的資料元素 查詢 o 1 插入刪除 o n 需要預分配儲存空間,分大了浪費,分小了易發生上溢 單...