實際上,頭插法是將要插入的結點,插入到表頭結點和已插入結點的中間,核心實現看第三步。
頭插法的步驟如下:
構建鍊錶,實際上是為構建乙個表頭結點,並讓其next為null;
構建要插入的結點 s
讓s->next = l->next;
再讓l->next = s;
需要特別注意的是,第一次的時候實際上是讓s結點的next域指向了null;,這得益於我們構建表頭結點時,讓表頭結點的next域初始化為null;
#include
#include
typedef
struct node
node,
*lnodelist;
intmain()
//用於遍歷的指標p
通過頭插法的過程和輸出結果,我們可以發現頭插法實際構造的鍊錶與使用者輸入資料的順序是相反的,如果想要根據使用者輸入資料的順序來構造鍊錶可以使用尾插法,但是與頭插法不同的是,需要多加乙個指向尾部結點的尾指標。
構建帶頭節點的鍊錶,並讓尾指標 r 指向該頭節點
構建要插入的結點s
r-> next = s
,r = s
若沒有需要插入的結點,將尾指標的next置null,這是為了方便後面的遍歷。
#include
#include
typedef
struct node
node,
*lnodelist;
intmain()
// 尾結點置空
c語言頭插法尾插法建立鍊錶
頭插法尾插法建立鍊錶一直是大家初學演算法時搞不明白的事情,現在我將其總結了一下,發個部落格記錄一下 尾插法就是定義乙個頭結點之後,挨個往後建立鍊錶。最關鍵的兩步就是 head next a head a 這兩步搞懂了就搞懂尾插法了 鄙人不才畫了兩幅圖,大家根據這個圖的原理一步步推自己再畫一下就能搞懂...
鍊錶之頭插法和尾插法
頭插法 生成的鍊錶和我輸入的資料順序是相反的,所以又稱逆序建表法。例如 e d c b a 建成的鍊錶就是 head a b c d e 演算法步驟 建立乙個只有頭結點的空鍊錶。根據待建立鍊錶的元素個數n,迴圈n次執行以下操作 生成乙個新結點 p 輸入元素值賦給新結點 p的資料域 將新結點 p插入到...
鍊錶操作 頭插法尾插法
單鏈表的插入操作,包括頭插和尾插,兩種的時間複雜度都為o n 單鏈表插入操作 頭插 尾插 include include using namespace std 定義結點資料型別 typedef int elemtype 結點定義 typedef struct lnode lnode,linklis...