1. 程式人生 > >資料結構學習二 資料結構之連結串列圖解版【建立,遍歷,刪除,插入】

資料結構學習二 資料結構之連結串列圖解版【建立,遍歷,刪除,插入】

圖解連結串列:

● 建立動態連結串列
待插入的結點p1資料部分初始化,該結點被頭結點head、尾結點p2同時指向
這裡寫圖片描述

1.任務是開闢結點和輸入資料
2.並建立前後相鏈的關係

p1重複申請待插入結點空間,對該結點的資料部分賦值(或輸入值)
P2->next 指向p1新開闢的結點。

[圖片]

P2指向新結點p2=p1
[圖片]

[圖片]

[圖片]
● 遍歷連結串列

1.單向連結串列總是從頭結點開始的;
2.每訪問一個結點,就將當前指標向該結點的下一個結點移動:
p=p->next;
3.直至下一結點為空 P=NULL

[圖片]

● 刪除節點

刪除結點原則:不改變原來的排列順序,只是從連結串列中分離開來,撤消原來的連結關係。
兩種情況:
1、要刪的結點是頭指標所指的結點則直接操作;
2、不是頭結點,要依次往下找。另外要考慮:空表和找不到要刪除的結點
需要由兩個臨時指標:P1: 判斷指向的結點是不是要刪除的結點(用於尋 找);P2: 始終指向P1的前面一個結點;

[圖片]

[圖片]
● 節點插入

插入結點:將一個結點插入到已有的連結串列中插入原則:
1、插入操作不應破壞原連結關係
2、插入的結點應該在它該在的位置實現方法:
應該有一個插入位置的查詢子過程共有三種情況:
1、插入的結最小
2、插入的結點最大
3、插入的結在中間

同刪除一樣,需要幾個臨時指標:P0: 指向待插的結點;初始化:p0=陣列stu;P1: 指向要在P1之前插入結點;初始化: p1=head;P2: 指向要在P2之後插入結點;插入操作:當符合以下條件時:p0->num 與 p1->num 比較找位置if(p0->num>p1->num)&&(p1->next!=NULL) 則插入的結點不在p1所指結點之前;指標後移,交給p2; p1= p1->next; p2=p1;則繼續與 p0 指向的陣列去比,直到(p1->next!=NULL)為止。 否則有兩種情況發生: if(head==p1) head=p0;p0->next=p1插到原來第一個結點之前;else p2->next=p0;p0->next=p1; 插到 p2 指向的結點之後;還有另外一種情況:插到最後的結點之後;p1->next=p0;p0->next=NULL;

[圖片]

[圖片]