C語言學習筆記 鍊錶(三)鍊錶的插入

2021-10-18 13:24:17 字數 2925 閱讀 9313

從指定節點後方插入新節點

假設我們已有五個節點,我們要把乙個新節點new插入到3後邊。

需要三個步驟:

找到 3 這個節點。

把新節點指向3這個節點的下乙個節點(3->next = new->next)。

把3指向新節點。(3->next = new)

//定義結構體

struct test

;//輸出鍊錶資料

void

printlink

(struct test *head)

putchar

('\n');

}int

insertfrombehind

(struct test *head,

int data,

struct test *new)

//跳到下一節點

point = point->next;

}return0;

}int

main()

;struct test t2 =

;struct test t3 =

;struct test t4 =

;struct test t5 =

;struct test new =

;//指向對應節點位址形成鍊錶

t1.next =

&t2;

t2.next =

&t3;

t3.next =

&t4;

t4.next =

&t5;

//插入前輸出

printlink

(&t1)

;int ret =

insertfrombehind

(&t1,3,

&new)

;//插入反饋

if(ret)

else

//插入後輸出

printf

("after inerst \n");

printlink

(&t1)

;return0;

}執行結果:

從指定節點前方插入新節點

從指定節點前插入新節點要考慮到兩種情況:

一、從第乙個節點(頭結點)前插入

假設我們已有五個節點,我們要把乙個新節點new插入到頭節點前。只需把新節點指向原來的頭結點並將其變為新的頭結點即可。

二、不在頭節點前插入

假設我們已有五個節點,我們要把乙個新節點new插入到3前邊。

如果不是頭結點,我們首先判斷當前所指向的節點是不是尾結點。

假設我們要插入到 3 這個節點前, 在函式中piont剛好指向到了 2 這個節點,我們就判斷 2 這個節點的下乙個節點的 data 是否與我們所要插入的節點資料相同(point->next->data == data)。如果相同則把該節點指向 3 節點(new->next = point->next)。

把2指向新節點。(2->next = new)

#include

//定義結構體

struct test

;//輸出鍊錶資料

void

printlink

(struct test *head)

putchar

('\n');

}struct test *

insertfromfront

(struct test *head,

int data,

struct test *new)

while

(point->next !=

null

)//跳到下一節點

point = point->next;

}printf

("insert faulat!\n");

return head;

}int

main()

;struct test t2 =

;struct test t3 =

;struct test t4 =

;struct test t5 =

;struct test new =

;//指向對應節點位址形成鍊錶

t1.next =

&t2;

t2.next =

&t3;

t3.next =

&t4;

t4.next =

&t5;

head =

&t1;

//輸出

printlink

(head)

;struct test new2 =

; head =

insertfromfront

(head,3,

&new2)

;printlink

(head)

;return0;

}

執行結果:

非頭結點:

頭結點:

C語言學習筆記 鍊錶

鍊錶是一種常見的重要的資料結構。它是動態地進行儲存分配的一種結構。它可以根據需要開闢記憶體單元。鍊錶有乙個 頭指標 變數,以head表示,它存放乙個位址。該位址指向乙個元素。鍊錶中每乙個元素稱為 結點 每個結點都應包括兩個部分 一為使用者需要用的實際資料,二為下乙個結點的位址。因此,head指向第乙...

C語言學習筆記 鍊錶(四)鍊錶的刪除

鍊錶的節點刪除有兩種情況 一 刪除頭節點 將頭結點變為第二個節點即可。二 刪除非頭節點 將要刪除的節點的前乙個節點指向到要刪除的節點的下乙個節點。定義結構體 struct test 輸出鍊錶資料 void printlink struct test head putchar n struct tes...

C語言學習 鍊錶

建立單鏈表,每個節點包括學號 姓名 性別 年齡和計算機成績。實現按學號刪除 鍊錶中指定結點的功能。2.將 1 中建立的單向鍊錶 a 分別拆成兩個鍊錶 b,c。b 中存放 80 分以上成績的節點,c 中存放其他結點。3.將 1 中建立的單向鍊錶 a 改為按計算機成績遞增排序的單向鍊錶,並統計出高於平均...