这篇文章将为大家详细讲解有关如何进行数据结构C语言链表的实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言需要用到的函数库#include<stdio.h>#include&
这篇文章将为大家详细讲解有关如何进行数据结构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语言链表的实现就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
--结束END--
本文标题: 如何进行数据结构C语言链表的实现
本文链接: https://www.lsjlt.com/news/302039.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0