C語言編寫一個鏈表
本文實例為大家分享了C語言編寫一個鏈表的具體代碼,供大家參考,具體內(nèi)容如下
鏈表

具備的基本功能:
1.創(chuàng)建頭鏈表
struct Node* Creatlist(){//創(chuàng)建鏈表頭
struct Node *headnode = (struct Node*)malloc(sizeof(struct Node));//創(chuàng)建動態(tài)內(nèi)存鏈表,指針變量
headnode->next = NULL;//鏈表初始化
return headnode;
}
2.創(chuàng)建節(jié)點
struct Node* Creatnode(int num){//創(chuàng)建結(jié)點,鏈表,參數(shù)數(shù)字域
struct Node* newnode = (struct Node*)malloc(sizeof(struct Node));//創(chuàng)建動態(tài)內(nèi)存鏈表,指針變量
newnode->num = num;
newnode->next = NULL;//鏈表初始化
return newnode;
}
3.插入節(jié)點

void Insetlist(struct Node* list, int num){//頭插法
struct Node* insetnode = Creatnode(num);
if (list != NULL){
insetnode->next = list->next;
list->next = insetnode;
}
else{
printf("節(jié)點不存在\n");
}
}
void Insetlists(struct Node* headnode, int n, int num){//在n節(jié)點處插入,參數(shù)頭節(jié)點,在第n個節(jié)點處插,插入的數(shù)據(jù)num
int i = 1;
struct Node *t = headnode;
while (i < n&& t!= NULL){
t = t->next;
i++;
}
if (t != NULL){
struct Node* insetnode = Creatnode(num);
insetnode->next = t->next;
t->next = insetnode;
}
else{
printf("節(jié)點不存在\n");
}
}
4.修改節(jié)點
void Modifynode(struct Node* headnode, int n){//修改節(jié)點,參數(shù)鏈表,修改的第n個節(jié)點
struct Node* list = headnode;
int i = 0;
while (i < n&&list != NULL){
list = list->next;
i++;
}
if (list != NULL){
printf("請輸入你要修改的值\n");
int j = 0;
scanf("%d", &j);
list->num = j;
}
else{
printf("節(jié)點不存在\n");
}
}
5.刪除節(jié)點

定義兩個指針,一個指向刪除節(jié)點的上一個節(jié)點,一個指向要刪除的節(jié)點
void Deletnode(struct Node* headnode, int n){//刪除第n個節(jié)點,
int i = 1;
struct Node *strat = headnode;
struct Node *end = headnode->next;
while (i < n&&end != NULL){
strat = strat->next;
end = end->next;
i++;
}
if (end != NULL){
strat->next = end->next;
free(end);
}
else{
printf("節(jié)點不存在\n");
}
}
6.打印節(jié)點
void Printnode(struct Node* headnode){//打印節(jié)點
struct Node* list = headnode;
while ((list->next) != NULL){
list = list->next;
printf("%d\t", list->num);
}
printf("\n");
}
7.主函數(shù)
int main(){
struct Node* list = Creatlist();
Insetlists(list, 1, 1);
Printnode(list);
int i = 0;
printf("請輸入修改哪個節(jié)點\n");
scanf("%d", &i);
Modifynode(list, i);
Printnode(list);
printf("請輸入刪除哪個節(jié)點\n");
int n = 0;
scanf("%d", &n);
Deletnode(list, n);
Printnode(list);
system("pause");
return 0;
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++中可以接受任意多個參數(shù)的函數(shù)定義方法(詳解)
下面小編就為大家?guī)硪黄狢++中可以接受任意多個參數(shù)的函數(shù)定義方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
C語言結(jié)構(gòu)體數(shù)組常用的三種賦值方法(包含字符串)
C語言只有在定義字符數(shù)組的時候才能用“=”來初始化變量,其它情況下是不能直接用“=”來為字符數(shù)組賦值的,下面這篇文章主要給大家介紹了關(guān)于C語言結(jié)構(gòu)體數(shù)組常用的三種賦值方法,需要的朋友可以參考下2022-06-06
Windows下ncnn環(huán)境配置教程詳解(VS2019)
這篇文章主要介紹了Windows下ncnn環(huán)境配置(VS2019),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
C語言數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的簡單實例
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的簡單實例的相關(guān)資料,需要的朋友可以參考下2017-06-06

