從指定節點後方插入新節點
假設我們已有五個節點,我們要把乙個新節點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 改為按計算機成績遞增排序的單向鍊錶,並統計出高於平均...