鍊錶的複習 頭插與尾插有頭鍊錶

2021-08-20 23:43:24 字數 1368 閱讀 1265

#此文章用於大一c語言的鍊錶複習

這裡就不再上鍊表官方定義了,直接說我對鍊錶的理解。鍊錶相當於記憶體中一系列不連續的位址通過指標相互聯絡在一起,它需要通過結構體來實現,同時引入了節點的概念,即以前我們通過乙個變數來儲存資料,現在在鍊錶中用節點來儲存資料,因為在鍊錶中,乙個資料總伴隨著乙個指向下乙個資料位址的指標,所以這種形式的變數需要用結構體來實現,乙個結構體變數裡有儲存資料的子變數,還有儲存下乙個結構資料的指標變數,這種形式很像火車車廂,有裝載貨物的地方,還有連線下乙個車廂的鉤子,乙個節點中的指標變數就相當於那個鉤子。

我畫了乙個圖,我意識中的鍊錶就是這樣的,老師也這樣畫過。

之後是鍊錶的基本操作

一.建立乙個鍊錶

1.頭插法建立乙個有頭鍊錶

#include #include //需要用到malloc函式

struct link

;//先建立結構體

int main(void)

head=head->next;//這裡附上乙個指標輸出,以供直觀測試

while(head!=null)

return 0;

}

附錄1:這裡是乙個能進行連續頭插的方法,只需重複這兩步就能實現連續的頭插,但如果要生成乙個正規可用的鍊錶,則要求初始的單節點的next指標必須指向空。

附錄3:頭插法按順序輸出是與輸入是的順序反向的,所以在做鍊錶逆序的題時會用到頭插法。

2.尾插法建立乙個有頭鍊錶。

#include #include //需要用到malloc函式

struct link

;//先建立結構體

int main(void)

head=head->next;//這裡附上乙個指標輸出,以供直觀測試

while(head!=null)

return 0;

}

附錄:尾插法的順序是正常的,所以這也是一種非常常用的鍊錶建立方法

關於有頭節點的乙個總結:由於建立時第乙個節點的一些特殊性,導致有時第乙個節點有值時會出現一些麻煩的情況,所以這時有乙個資料為空的頭節點有一些優勢,同時有頭節點在建立時思路較為簡單,可操作性也很強,但有時會比無頭節點多一步,會麻煩一些。

這裡先寫有頭節點,因為我發現我對無頭節點鍊錶的理解並不是很透徹,同時我自己仿照書上的方法寫了乙個無頭鍊錶,發現我的編譯器對其有報錯,我打算換個編譯器再試試,所以為了避免打擾其他人的思維,我先到此為止。

鍊錶操作 頭插法尾插法

單鏈表的插入操作,包括頭插和尾插,兩種的時間複雜度都為o n 單鏈表插入操作 頭插 尾插 include include using namespace std 定義結點資料型別 typedef int elemtype 結點定義 typedef struct lnode lnode,linklis...

頭插法 尾插法建立鍊錶

鍊錶是線性表的一種,一般來說鍊錶就是一系列的儲存資料元素的單元通過指標串接起來形成的,常見的鍊錶是單鏈表和雙鏈表,乙個域用於資料元素的儲存,另乙個或兩個域是指向其他單元的指標。對於單鏈表來說,指標域是乙個,指向當前節點的後繼節點 雙鏈表來說,乙個指標域指向當前節點的後繼節點,另外乙個指標域指向當前節...

鍊錶之頭插法和尾插法

頭插法 生成的鍊錶和我輸入的資料順序是相反的,所以又稱逆序建表法。例如 e d c b a 建成的鍊錶就是 head a b c d e 演算法步驟 建立乙個只有頭結點的空鍊錶。根據待建立鍊錶的元素個數n,迴圈n次執行以下操作 生成乙個新結點 p 輸入元素值賦給新結點 p的資料域 將新結點 p插入到...