*今天在酷殼上看到linus提到的使用及指標來刪除單鏈表中的節點,感覺比常見做法要好很多,所以記錄一下。方便自己以後檢視。*
為了進行對比先寫乙個自己在進行單鏈表節點刪除時操作;
鏈**式如下:
第一種方法:採用一級指標;
//刪除鍊錶中 節點值 == value 的節點;
struct node * remove( struct node *head, int
value, remove_fun rm )
else
prev = cur;
cur = cur->next;
}return head;
}
以上做法是一種常用的採用一級指標來進行鍊錶節點的刪除,並在操作中考慮了要刪除的節點位置,分三種情況:
第一種:當刪除的節點是鍊錶中的第乙個節點時;
第二種:當刪除的節點是最後乙個節點時;
第三種:當刪除鍊錶中間的節點;
並且需要使用變數prev來儲存前乙個節點,同時由於在刪除第乙個節點時其鍊錶的頭指標已經發生變化,所以要通過返回值來告訴呼叫函式;
可以看到以上**能實現功能,但是考慮情況較多,**不夠簡潔。
第二種方法:採用二級指標;
void remove( struct node **head, int
value, remove_fun rm )
else
cur = &entry->next;}}
看到上面的這段**感覺真是高手之作啊,寫的真是邏輯簡潔,將所有的情況都包含其中。以此記下,方便以後使用與查閱。
二級指標刪除單鏈表
首先建立乙個節點 typedef struct node node 然後再建立乙個鍊錶,鍊錶元素是由 1 5 這5個整數除以2得到的餘數構成的。建立這個鍊錶依然使用了二級指標。直接在create函式中修改了 head的值,讓 head的值是第乙個節點。可見這種方法建立的鍊錶不存在大多數教材上得 頭結...
刪除單鏈表中的重複節點
2.1 知識點分析 鍊錶是線性結構的一種物理實現,除此之外,線性結構還可以使用順序儲存結構來實現。順序儲存是使用記憶體中的一塊位址連續空間順序存放線性表中的每乙個元素,每個元素在物理上相鄰,而鏈式儲存結構則不會要求物理上的元素相鄰,它通過節點的指標域指向下乙個元素。線性結構是資料結構的幾種常見邏輯結...
通過二級指標插入節點
這是在程式設計珠璣的習題上看到的,p214第四題 節點的定義如下 struct node 另外初始化的過程中,初始化頭結點,head new node maxval,0 其中maxval表示乙個最大值 通常的插入函式都會這樣來寫 void insert int t if p val t return...