鍊錶的插入操作

2021-10-11 22:21:53 字數 2747 閱讀 8277

小甲魚鍊錶插入:

對鍊錶的插入是指將乙個結點插入到乙個已有的鍊錶中。

為了能做到正確插入,必須解決兩個問題:

①怎樣找到插入的位置;

②怎樣實現插入。

我們可以先用指標變數p0指向待插入的結點,p1指向第乙個結點,將p0->num與p1->num相比較,如果p0->num > p1->num,此時將p1後移,並使p2指向剛才p1所指的結點。

流程圖如下,左邊三個都是插入到鍊錶中間(不是表頭或表尾),右上角是插入到表頭,右下角是插入到表尾。

流程圖如下:

原始碼:

#include

#include

#include

#define len sizeof(struct student)

//student結構的大小

struct student *

creat()

;//建立鍊錶

struct student *

del(

struct student *head,

int num)

;//del函式用於刪除結點,*head即鍊錶

//的頭指標,num是要刪除的結點num。

struct student *insert (

struct student *head,

struct student *stu_2)

;//第乙個引數需要被插入的鍊錶

//第二個引數待插入的結構的位址

void

print

(struct student *head)

;//列印鍊錶

struct student

;int n;

//全域性變數,用來記錄存放了多少資料。

void

main()

struct student *

creat()

//把資料調進倉庫裡面

else

p2 = p1;

p1 =

(struct student *

)malloc

(len)

;//->

//新建乙個student資料結構的物件,為其分配student結構所占用的記憶體空間。

//sizeof(struct student)為求該物件在記憶體中占用多少記憶體空間,然後用malloc函式分配同樣大小的空間。

//將指標p1指向該物件,即新分配出的空間。

printf

("\npls enter the num: ");

scanf

("%d"

,&p1->num)

;printf

("pls enter the score: ");

scanf

("%f"

,&p1->score);}

p2->next =

null

;return head;

}void

print

(struct student *head)

//把資料從倉庫調出,此時無需要p1、p2等指標,直接用p

while

(p);

//倘若p的next為null,既p=0,結束迴圈 }}

struct student *

del(

struct student *head ,

int num)

p1 = head;

//從頭結點開始尋找

while

(p1->num != num && p1->next !=

null

)//如果第乙個結點的學號不是要刪除的學號,而且存在第二個結點

//則使p2指向p1,再讓p1順延下去,直到找到要刪除的資料為止。

if(num == p1->num)

else

//一般情況:如果要刪除的資料不是頭結點的資料

printf

("\ndelete no: %d succeed!\n"

,num)

; n = n-1;

//n是作為乙個全域性變數,用來記錄鍊錶的資料數。

}else

end:

return head;

}struct student *

insert

(struct student *head,

struct student *stu_2)

else

//如果不是空表的話

if(p0->num <= p1->num)

else

//普通情況,插入中間

p0->next = p1;

}else

//p0->num > p1->num,既p0的num最大,插入到末尾 }

n=n+1;

//由於插入了,所以增加了一位資料成員到鍊錶中

鍊錶插入操作

輸入格式 第一行輸入是乙個整數 n 1 n 100 表示一共要執行 n 次插入操作。接下來輸入 n 行,每行輸入兩個整數 p 和 q 0 p,q 100 其中 p 表示結點插入鍊錶中的位置 從下標為 0 開始 q 表示插入元素的值,兩個整數之間用乙個空格隔開,行末沒有空格。輸出格式 輸出一共 n 1...

迴圈鍊錶的插入操作

1.參考文章 2.測試 view code 1 include 2 include 3 4using namespace std 56 struct node715 16 17void insert node anode,int x 2324 node p anode 25 node prev nu...

鍊錶插入刪除操作

include using namespace std 定義單向鍊錶節點 struct listnode end of listnode 將新節點插入煉表頭 void insertlist listnode head,int insertdata listnode pnode new listnod...