C語言編寫一個鏈表
更新時間:2021年05月31日 11:11:54 作者:兩片空白
這篇文章主要為大家詳細介紹了C語言編寫一個鏈表,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C語言編寫一個鏈表的具體代碼,供大家參考,具體內容如下
鏈表
具備的基本功能:
1.創(chuàng)建頭鏈表
struct Node* Creatlist(){//創(chuàng)建鏈表頭 struct Node *headnode = (struct Node*)malloc(sizeof(struct Node));//創(chuàng)建動態(tài)內存鏈表,指針變量 headnode->next = NULL;//鏈表初始化 return headnode; }
2.創(chuàng)建節(jié)點
struct Node* Creatnode(int num){//創(chuàng)建結點,鏈表,參數(shù)數(shù)字域 struct Node* newnode = (struct Node*)malloc(sizeof(struct Node));//創(chuàng)建動態(tà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; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
詳解C++中實現(xiàn)繼承string類的MyString類的步驟
這篇文章主要介紹了C++中實現(xiàn)繼承string類的MyString類的步驟,其中的要點是要實現(xiàn)運算符的重載,需要的朋友可以參考下2016-04-04探討:用兩個棧實現(xiàn)一個隊列(我作為面試官的小結)
作為面試官的我,經常拿這道用兩個棧實現(xiàn)一個隊列的面試題來考面試者,通過對面試者的表現(xiàn)和反應,有一些統(tǒng)計和感受,在此做個小結2013-05-05C++ 將文件數(shù)據(jù)一次性加載進內存實例代碼
這篇文章主要介紹了C++ 將文件數(shù)據(jù)一次性加載進內存實例代碼的相關資料,需要的朋友可以參考下2017-05-05