一、首先,看看單鏈表中第i個元素的刪除:
status listdelete_l (linklist &l,int i,elemtype &e)
if(!(p->next)||j刪除位置不合理
q=p->next;p->next=q->next; //刪除並釋放結點
e=q->data;free(q);
return ok;
}例如對單鏈表l中第3個元素c的刪除,即對第4個結點刪除:
1) 最開始時p
指標指向頭結點,
2) 執行迴圈語句,當j=2時,p
指向第三個結點,迴圈結束;
3) q=p->next;p->next=q->next; 刪除並釋放結點;
則實現了c
結點的刪除。
二、單鏈表在不知頭結點的情況下對第i個元素的刪除:
例如對b結點的刪除,最開始只知道指向b結點的指標q,因為是單鏈表,不能獲取到前驅指標,所以不能用上面的方法進行刪除。
可以用下面的語句實現q
結點的刪除:
q->data=q->next->data;
q->next=q->next->next;
此時,l
單鏈表變為:
雖然刪除的是c結點,但它把c中的資料複製到b中,相當於刪除了b結點。
但要注意的是,這種刪除方法不能刪除位於表尾的結點,因為他的後面再沒有別的結點可以替換。
單鏈表的頭結點和頭指標
當鍊表的每個結點只包含乙個指標域時,此鍊錶就是單鏈表。在單鏈表的開始結點之前附設乙個型別相同的結點,稱之為頭結點。頭結點的資料域可以不儲存任何資訊,頭結點的指標域儲存指向開始結點的指標 即第乙個元素結點的儲存位置 頭指標是指向第乙個結點的指標,鍊錶中可以沒有頭結點,但是不能沒有頭指標。單鏈表的定義 ...
47 有頭結點的單鏈表
typedef int elemtype typedef struct node struct node next headlist 有頭結點的單鏈表 include headlist.h include include include static headlist elemtype val,he...
單鏈表的增加 無頭結點
單鏈表的增加 無頭結點 本文展示單鏈表的增加 1.從頭部新增 2.從尾部新增 初始化單鏈表 typedef struct listnode listnode typedef listnode list 頭結點為空的初始化 param head void initlist list head 單鏈表插...