資料結構 2 鍊錶

2022-03-09 20:41:18 字數 2022 閱讀 7980

填補那些模稜兩可的後知後覺

public class linkedlist

public node(e e)

public node()

@override

public string tostring()

}private node dummyhead;//虛擬頭節點

private int size;//元素個數

public linkedlist()

//獲取鍊錶中的元素個數

public int getsize()

//判斷鍊錶是否為空

public boolean isempty()

/*** 在指定索引處新增元素

* @param index

* @param e

*/public void add(int index,e e)

//利用虛擬頭節點,將新增索引處的前方元素全部前移一位

node prve = dummyhead;

for (int i = 0; i < index; i++)

prve.next = new node(e,prve.next);

size++;

}/**

* 新增頭節點

*/public void addfirst(e e)

/*** 在結尾處增加元素

* @param e

*/public void addlast(e e)

public e get(int index)

node cur = dummyhead.next;

for (int i = 0; i < size; i++)

return cur.e;

}//獲取鍊錶的第乙個元素

public e getfirst()

//獲取鍊錶的最後乙個元素

public e getlast()

//修改鍊錶中指定位置的元素

public void set(int index ,e e)

node cur = dummyhead.next;

for (int i = 0; i < size; i++)

cur.e = e;

}//查詢鍊錶中是否包含某個元素e

public boolean contains(e e)

cur = cur.next;

}return false;

}//刪除指定位置的元素

public void remove(int index)

//首先定位此元素,與修改或查詢一致,將改元素置空,然後將改元素原來的前後元素進行指向

node prev = dummyhead;

for (int i = 0; i < index; i++)

//查詢到了元素

node retnode = prev.next;

//將前後元素進行關聯

prev.next = retnode.next;

//直接指向空

retnode.next = null;

size --;

}//刪除鍊錶中的第乙個元素

public void removefirst()

// 從鍊錶中刪除最後乙個元素, 返回刪除的元素

public void removelast()

@override

public string tostring()

return res.tostring();

}}

因為第乙個元素(真頭節點)是沒有前序節點的。當我們在做操作時都需要對頭節點進行單獨的判斷,這樣一來的話,真頭節點的邏輯就有空。所以為了方便,我們設定乙個虛擬的頭節點,來遮蔽真頭節點的特殊性。

我們從鍊錶的操作中可以很容易的看出,對於增刪改查這幾個操作的複雜度都是o(n)的,但是如果我們只是對鍊表頭進行增/刪/查的操作的話,那麼它的複雜度就是o(1)的,這裡也可以看出來我們的鍊錶適合幹的事情了..

資料結構2 鍊錶

首先來說乙個問題,線性表和鍊錶的區別。線性表是n個資料元素的有限序列,複雜的線性表中,資料元素可以有若干個資料項構成乙個記錄。線性表可以有兩種表示方式,順序表示和鏈式表示。線性表的順序表示是用一組連續的記憶體儲存線性表的資料元素。而線性表的鏈式表示是用隨機的儲存單元來儲存線性表的元素,這種線性表就是...

資料結構2迴圈鍊錶

尾結點指向頭結點的單鏈表。解決了單鏈表無法查詢某一結點的問題。結點定義方式 define maxsize 20 定義陣列的最大長度 typedef struct clinklist mode 類似單鏈表。迴圈鍊錶的初始化 初始化迴圈鍊錶 void ds init mode pnode pnode 指...

資料結構之鍊錶2

繼上文 資料結構之鍊錶1之後,本文將繼續講解鍊錶。迴圈單鏈表是另一種形式的單鏈表。它的特點是表中的最後乙個結點的指標域指向頭結點,整個鍊錶形成乙個環。因此,從迴圈單鏈表中任一結點出發均可找到表中其他結點,如下圖。類似的,還可以有多重鏈的迴圈鍊錶。迴圈單鏈表的底層實現 迴圈單鏈表的操作與單鏈表的實現基...