單鏈表的刪除第i個元素

2021-09-26 14:42:10 字數 1059 閱讀 8564

刪除操作圖示

a2的節點q,要實現q的刪除,就是讓他的前繼節點p繞過a2直接指向後繼節點a3。

p->next=p->next->next;

單鏈表第i個資料刪除結點的演算法思路:

1.宣告結點p指向鍊錶第乙個結點,初始化j=1;

2.當jnext賦值給q

4.單鏈表的刪除標準語句p->next=q->next,將q結點中的資料賦值給e,作為返回;釋放q結點。

typedef int status;

//可以用c語言結構指標來描述單鏈表:

typedef struct node

node :

typedef struct node* linklist;

linklist p;

status deletelemlinklist(linklist l,int i, int e)

} p->next =p->next->next;

free(p);

e=p->next->data;

return success;

}

無論是單鏈表插入還是刪除演算法,它們都是由兩個部分組成:第一部分就是遍歷查詢第i元素,第二部分就是實現插入和刪除元素。從整個演算法來說,我們很容易可以推出他們的肘間複雜度都是0(n)。再詳細點分析:如果在我們不知道第i個元素的指標位置,單鏈表資料結構在插入和刪除操作上與線性表的順序儲存結構是沒有太大優勢的。

但如果,我們希望從第i個位置開始,插入連續10個元素,對於順序儲存結構意味看,每一次插入都需要移動n-i個位置,所以每次都是0(n)。而單鏈表,我們只需要在第一次時,找到第i個位置的指標,此時為0(n),接下來只是簡單地通過賦值移動指標而已,時間複雜度都是0(1)。顯然對於插入或刪除資料越頻繁的操作,單鏈表的效率優勢就越是明顯

刪除單鏈表中第i個節點

單鏈表的刪除操作是將單鏈表的第i個節點刪去。具體步驟如下 1 找到節點ai 1的儲存位置p,因為在單鏈表中節點ai的儲存位址是在其直接前趨節點ai 1的指標域next中 2 令p next指向ai的直接後繼節點ai 1 3 釋放節點ai的空間 include include typedef stru...

單鏈表第i個元素獲取 插入 刪除 整表建立 刪除

獲取鍊錶第i個資料的演算法思路 1.宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始 2.當j 3.若到鍊錶末尾p為空,則說明第i個元素不存在 4.否則查詢成功,返回結點p的資料。code follow struct getelem linklist l,int i,elemtype e if p...

資料結構之單鏈表刪除第i個元素並用e返回其值的演算法

資料結構之單鏈表區第i個元素的演算法演算法思路 1.宣告乙個結點p指向第乙個結點,初始化j從1開始 2.當j3.若到鍊錶末尾p為空,則說明第i個元素不存在 4.否則查詢成功,將欲刪除的結點p pnext賦值給q 5.將q結點資料賦給e 6.釋放q結點 7.返回成功 單鏈表的資料結構 typedef ...