用自己的話來說就是和線性表一樣,只不過多了後邊可以儲存的位置
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 需要預分配儲存空間,分大了浪費,分小了易發生上溢 單...