單鏈表的插入刪除(考研)

2022-07-30 21:57:12 字數 1212 閱讀 8194

知識總覽

按位序插入(帶頭結點)

當插入鍊錶中的第乙個結點時:

指定結點的後插操作

指定結點的前插操作

假設給個未知數p,如何找到p結點的前驅結點?因為單鏈表只能從前往後查詢不能從後往前查詢,所以p結點之前的區域都是未知的

因此我們得到的時間複雜度就是o(n)。我們雖然可以通過前面的方法進行查詢,但是如果不傳入頭指標那麼我們之前的方法不就不能用

了嗎?

這裡我們可以用乙個偷天換日的方法,將p中的data與s中的data相互交換,這樣我們可以省去查詢的時間,將時間複雜度降至o(1)。

按位序刪除(帶頭結點)

指定結點的刪除:如果不帶頭結點,如何刪除第乙個元素?

p->next->data存在乙個小的bug,如果說p結點剛好是鍊錶的最後的結點,那麼它就無法獲取結點後的下個結點的data就會發生錯誤。

所以我們能明白但鍊錶的侷限性,在下期學習雙鏈表看看是如何解決單鏈表存在的問題。

單鏈表插入刪除

在鍊錶的插入刪除操作上理解起來比順序表更為容易,其不需要變動在i位置前的所有的元素,只需要修改節點指標即可。插入 設在鍊錶的i位置插入新元素,設i 1節點的指標域為p,設插入的節點指標域為s,所以插入操作應該為 s next p next 將s的字尾改為p的字尾,p的字尾是原來的第i個點的指標域,將...

單鏈表的插入刪除

include using namespace std struct lnode void creat link lnode head head指標的引用,lnode head 傳遞的是指標,但是對於指標的原值卻發生了copy,這樣你雖然可以對指標指向的記憶體進行修改但是不能對指標進行修改。因此要傳...

單鏈表插入刪除排序

package liu public class node public void setdata int data public int getdata public node getnext public void setnext node next package liu public cla...