C語言入門必學的一個功能極為強大的數組—雙向鏈表

鏈表是一個功能極為強大的數組,他可以在節點中定義多種數據類型,還可以根據需要隨意增添,刪除,插入節點。鏈表都有一個頭指針,一般以head來表示,存放的是一個地址。鏈表中的節點分為兩類,頭結點和一般節點,頭結點是沒有數據域的。鏈表中每個節點都分為兩部分,一個數據域,一個是指針域。

為什麼要學習鏈表?

鏈表主要有以下幾大特性:

1、解決數組無法存儲多種數據類型的問題。

2、解決數組中,元素個數無法改變的限制(C99的變長數組,C++也有變長數組可以實現)。

3、數組移動元素的過程中,要對元素進行大範圍的移動,很耗時間,效率也不高。

作為有強大功能的鏈表,對他的操作當然有許多,比如:鏈表的創建,修改,刪除,插入,輸出,排序,反序,清空鏈表的元素,求鏈表的長度等等。

實現原理:頭指針指向鏈表的第一個節點,然後第一個節點中的指針指向下一個節點,然後依次指到最後一個節點,這樣就構成了一條鏈表。

那麼如何來創建一個鏈表呢?

我們寫個程序演示一下:

C語言入門必學的一個功能極為強大的數組—雙向鏈表

一般創建鏈表我們都用typedef struct,因為這樣定義結構體變量時,我們就可以直接可以用LinkList *a;定義結構體類型變量了。

初始化一個鏈表,n為鏈表節點個數。

C語言入門必學的一個功能極為強大的數組—雙向鏈表

修改鏈表節點值

修改鏈表節點值很簡單。下面是一個傳入鏈表和要修改的節點,來修改值的函數。

C語言入門必學的一個功能極為強大的數組—雙向鏈表

刪除鏈表節點

刪除鏈表的元素也就是把前節點的指針域越過要刪除的節點指向下下個節點。即:p->next = q->next;然後放出q節點的空間,即free(q);

C語言入門必學的一個功能極為強大的數組—雙向鏈表

打算深入瞭解這個行業的朋友,可以加下小編的C/C++遊戲編程學習裙:666+295+498,邀請碼(懷念學c)不管你是小白還是大牛,小編我都歡迎,不定期分享乾貨,包括小編自己整理的一份2018最新的C/C++資料和0基礎入門教程,歡迎初學和進階中的小夥伴。

每天晚上20:00我都會開直播給大家分享C/C++遊戲編程學習知識和路線方法,群裡會不定期更新最新的教程和學習方法(進群送2018C/C++遊戲編程學習教程),大家都是學習C/C++的,或是轉行,或是大學生,還有工作中想提升自己能力的前端黨,如果你是正在學習C/C++的小夥伴可以加入學習。非常適合新手學習,有不懂的問題可以隨時問我,工作不忙的時候希望可以給大家解惑。

插入鏈表節點

插入節點就是用插入前節點的指針域鏈接上插入節點的數據域,再把插入節點的指針域鏈接上插入後節點的數據域。

C語言入門必學的一個功能極為強大的數組—雙向鏈表

輸出鏈表

輸出鏈表很簡單,邊遍歷邊輸出就行了。

C語言入門必學的一個功能極為強大的數組—雙向鏈表

結束語

好了,今天的知識就分享到這裡,歡迎關注“懷念感覺12”,私信關鍵詞:學習資料,獲取更多學習資源,如果文章對你有有幫助,請收藏關注,在今後與你分享更多學習c/c++的文章。同時歡迎在下面評論區留言如何學習c/c++。

C語言入門必學的一個功能極為強大的數組—雙向鏈表


分享到:


相關文章: