您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何進行數據結構C語言鏈表的實現,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
需要用到的函數庫
#include<stdio.h> #include<malloc.h>
malloc函數用來動態分配空間,相當于Java中new的作用
先是需要創建一個節點的結構體
typedef struct{ int data; struct linkNode* next; }linkNode;
void iniLinkList(linkNode *fp){//初始化鏈表傳入一個頭節點 linkNode *point = fp;//定義一個指針指向頭節點 for(int i=0;i<5;i++){ linkNode *node = malloc(sizeof(linkNode)); node->data=i; node->next=NULL; point->next = node; point=point->next; } }
int countListLength(linkNode *fp){//fp:鏈表頭節點 linkNode *point = fp;//定義指針指向頭節點 int sum = 0; //用來計算鏈表節點個數 while(point->next){ sum++; point=point->next; } return sum; }
void printLinkList(linkNode *fp){//傳入鏈表頭節點 linkNode *point = fp;//定義指針指向頭節點 printf("鏈表內容如下:\n"); while(point->next){ linkNode *node = point->next; printf("%d\t",node->data); point=point->next; } printf("\n"); }
int countListLength(linkNode *fp){//fp:鏈表頭節點 linkNode *point = fp;//定義指針指向頭節點 int sum = 0; //用來計算鏈表節點個數 while(point->next){ sum++; point=point->next; } return sum; }
int deleteNode(int index,linkNode *fp){//index:鏈表中節點的下標,fp:鏈表頭節點 linkNode *point = fp;//定義指針指向頭節點 if(index<0||index>(countListLength(fp)-1)){//判斷index是否有效(在鏈表長度范圍內) printf("下標不在鏈表內!"); return 1; //返回1表示刪除失敗 }else{ for(int i=0;i<index;i++){ //遍歷找到下標前一個位置 point=point->next; } linkNode *node = point->next; point->next=node->next; //刪除下標位置節點 return 0; //返回0表示刪除成功 } }
void insertLinkNode(linkNode *fp,int index,int data){//index:鏈表中節點的下標,fp:鏈表頭節點,data:插入的新數據 linkNode *point = fp;//定義指針指向頭節點 if(index<0||index>(countListLength(fp)-1)){//判斷index是否有效(在鏈表長度范圍內) printf("下標不在鏈表內!"); return; }else{ for (int i=0;i<index;i++) point=point->next; //找到下標位置前一個節點 linkNode *node = malloc(sizeof(linkNode)); node->data=data; //創建新節點 node->next=point->next; //將下標前一個節點的next賦值給node的next point->next = node; //將新創建的節點的地址給下標位置前一個節點 } }
#include<stdio.h> #include<malloc.h> typedef struct{ int data; struct linkNode* next; }linkNode; //初始化鏈表 void iniLinkList(linkNode *fp){//初始化鏈表傳入一個頭節點 linkNode *point = fp;//定義一個指針指向頭節點 for(int i=0;i<5;i++){ linkNode *node = malloc(sizeof(linkNode)); node->data=i; node->next=NULL; point->next = node; point=point->next; } } //向鏈表中指定位置插入節點 void insertLinkNode(linkNode *fp,int index,int data){//index:鏈表中節點的下標,fp:鏈表頭節點,data:插入的新數據 linkNode *point = fp;//定義指針指向頭節點 if(index<0||index>(countListLength(fp)-1)){//判斷index是否有效(在鏈表長度范圍內) printf("下標不在鏈表內!"); return; }else{ for (int i=0;i<index;i++) point=point->next; //找到下標位置前一個節點 linkNode *node = malloc(sizeof(linkNode)); node->data=data; //創建新節點 node->next=point->next; //將下標前一個節點的next賦值給node的next point->next = node; //將新創建的節點的地址給下標位置前一個節點 } } //刪除鏈表中指定位置節點 int deleteNode(int index,linkNode *fp){//index:鏈表中節點的下標,fp:鏈表頭節點 linkNode *point = fp;//定義指針指向頭節點 if(index<0||index>(countListLength(fp)-1)){//判斷index是否有效(在鏈表長度范圍內) printf("下標不在鏈表內!"); return 1; //返回1表示刪除失敗 }else{ for(int i=0;i<index;i++){ //遍歷找到下標前一個位置 point=point->next; } linkNode *node = point->next; point->next=node->next; //刪除下標位置節點 return 0; //返回0表示刪除成功 } } //計算鏈表長度 int countListLength(linkNode *fp){//fp:鏈表頭節點 linkNode *point = fp;//定義指針指向頭節點 int sum = 0; //用來計算鏈表節點個數 while(point->next){ sum++; point=point->next; } return sum; } //打印鏈表 void printLinkList(linkNode *fp){//傳入鏈表頭節點 linkNode *point = fp;//定義指針指向頭節點 printf("鏈表內容如下:\n"); while(point->next){ linkNode *node = point->next; printf("%d\t",node->data); point=point->next; } printf("\n"); } int main(){ linkNode *linkList = malloc(sizeof(linkNode));//創建一個頭節點 iniLinkList(linkList); printLinkList(linkList); deleteNode(3,linkList); printf("刪除后"); printLinkList(linkList); insertLinkNode(linkList,3,7); printf("插入后"); printLinkList(linkList); return 0; } // 鏈表內容如下: // 0 1 2 3 4 // 刪除后鏈表內容如下: // 0 1 2 4 // 插入后鏈表內容如下: // 0 1 2 7 4
關于如何進行數據結構C語言鏈表的實現就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。