小甲魚鍊錶插入:
對鍊錶的插入是指將乙個結點插入到乙個已有的鍊錶中。
為了能做到正確插入,必須解決兩個問題:
①怎樣找到插入的位置;
②怎樣實現插入。
我們可以先用指標變數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...