單鏈表的建立方法(頭插法 尾插法)

2021-10-09 23:36:54 字數 1659 閱讀 4802

單鏈表是資料結構中比較基礎的結構了。對於單鏈表的的建立方法,比較容易想到的是頭插法。但是當要求輸入順序與鍊錶連線的順序一致時,那麼頭插法就不是很友好了。因此了解單鏈表的尾插法也是很重要。

首先定義了單鏈表節點的資料結構listnode,具體**如下:

struct listnode 

;

頭插法,顧名思義就是從單鏈表的頭指標處插入節點,優點是思路簡單,比較符合單鏈表的正常思路,缺點就是插入順序與鍊錶連線順序相反。頭插法的操作步驟如下:

建立乙個節點newnode;儲存頭指標head.next的副本temp;讓頭指標指向newnode,newnode.next指向temp;

**實現:

void

creatlist_front

(listnode*

const

&h,const

int&a)

尾插法,就是從尾部插入節點的,優點是插入順序與鍊錶連線順序一致。因為頭插法有了頭指標,所以尾插法要宣告乙個尾指標tail,它始終指向鍊錶的最後乙個節點,因此給定乙個單鏈表時head時,要用尾插法插入節點必須先找到該鍊錶最後乙個節點,並讓tail指向它,如果鍊錶為空那麼,tail = head;

尾插法的操作步驟:

建立尾指標tail,使tail指向鍊錶的最後乙個節點;建立新節點newnode;使tail->next指向新節點newnode;讓tail指向newnode;

**實現如下:

void

creatlist_back

(listnode *

&t,const

int&a)

先用頭插法插入一部分資料,再用尾插法插入一部分,看看效果如何。

#include

using

namespace std;

struct listnode

;/*頭插法*/

void

creatlist_front

(listnode*

const

&h,const

int&a)

/*尾插法*/

void

creatlist_back

(listnode *

&t,const

int&a)

intmain()

return0;

}

第一次輸入:1 2 3 4 (ctrl+z)

第二次輸入:5 6 7 8 (ctrl+z)

輸出:4 3 2 1 5 6 7 8

頭插法和尾插法建立單鏈表

頭插法和尾插法建立單鏈表 include using namespace std typedef int elemtype typedef struct lnode linklist 頭插法建表 從尾部乙個乙個往前插入 void createlisthead linklist l,elemtype ...

頭插法與尾插法建立單鏈表

單鏈表的建立一般主流分為兩種建立方式 頭插法和尾插法。頭插法1 建立頭節點,維護head指標 引用 來指向頭節點 2 newnode表示待插入節點,維護newnode指向新節點 3 case1 當鍊表為空時,即首次插入新節點,將head.next指向新插入節點,即head.next newnode ...

頭插法和尾插法建立單鏈表

頭插法建立單鏈表 include include typedef struct lnodenode,linklist linklist headinsert linklist 頭插法建立單鏈表 void output linklist 遍歷輸出 int main void 頭插法建立單鏈表 link...