如何进行数据结构C语言链表的实现
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章将为大家详细讲解有关如何进行数据结构C语言链表的实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言需要用到的函数库#include#inc
千家信息网最后更新 2024年11月23日如何进行数据结构C语言链表的实现
这篇文章将为大家详细讲解有关如何进行数据结构C语言链表的实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
前言
需要用到的函数库
#include#include
malloc函数用来动态分配空间,相当于Java中new的作用
先是需要创建一个节点的结构体
typedef struct{ int data; struct linkNode* next;}linkNode;
函数
1. 链表初始化
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; }}
2. 计算链表长度
int countListLength(linkNode *fp){//fp:链表头节点 linkNode *point = fp;//定义指针指向头节点 int sum = 0; //用来计算链表节点个数 while(point->next){ sum++; point=point->next; } return sum;}
3. 打印链表
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");}
4.计算链表长度
int countListLength(linkNode *fp){//fp:链表头节点 linkNode *point = fp;//定义指针指向头节点 int sum = 0; //用来计算链表节点个数 while(point->next){ sum++; point=point->next; } return sum;}
5. 删除链表中指定位置节点
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;inext; } linkNode *node = point->next; point->next=node->next; //删除下标位置节点 return 0; //返回0表示删除成功 }}
6. 向链表中指定位置插入节点
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;inext; //找到下标位置前一个节点 linkNode *node = malloc(sizeof(linkNode)); node->data=data; //创建新节点 node->next=point->next; //将下标前一个节点的next赋值给node的next point->next = node; //将新创建的节点的地址给下标位置前一个节点 }}
7. 全代码+运行效果
#include#include 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 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 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语言链表的实现就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
节点
下标
指针
向头
位置
表头
内容
长度
数据
有效
中指
范围
结构
个头
个数
函数
数据结构
语言
成功
地址
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国企软件开发岗属于什么街道
加强社会网络安全意识教育
asp树形菜单 数据库
网络安全法规定在
FACEU下载软件开发
数据库多值查找是什么意思
传统软件开发
服务器 修改svn 仓库文件
上海飞棋网络技术股份有限公司
重建华为图库数据库
命令行导出数据库的某张表
常用会计软件开发方式
广州 服务器托管
创建数据库与表实验报告
数据库中单价数据类型
风暴下载软件开发
杭州服务器工控机应用案例
服务器安全巡查记录表
网络安全包括三方面含义
电脑网络安全有哪些功能
服务器请等待会话管理器
福建工程项目管控软件开发平台
东乡县人民医院网络安全
一个单位的人事数据库中的简历
信息科网络安全责任
专业财务代账软件开发
微信小程序数据库的驱动
csgo服务器 中文
读取数据库eof
合肥java高级软件开发