C-数据结构-单向链表(带头节点)

单向链表带头节点(head)(数据域,指针域)
随机访问性比较差 但是插入删除操作较为简单。

list.h

#ifndef LIST_H__
#define LIST_H__typedef int datatype;typedef struct node_st
{datatype data;struct node_st *next;
}link;link *list_create();int list_insert_at(link *,int i,datatype *);
int list_order_insert(list *,datatype *);int list_delete_at(list *,int i,datatype *);
int list_delete(list *,datatype *);int list_isempty(list *);
void list_display(list *);
void list_destory(list *);#endif

list.c

#include<stdio.h>
#include<stdlib.h>#include"list.h"link *list_create()
{list *me;me = malloc(sizeof(*me));if(me=NULL)return NULL;me->data = NULL;return me;
}
int list_insert_at(link *me,int i,datatype *data)
{int j = 0;list *node = me;list *newnode;if(i<0)return 0;while(j < i && node != null){node = node->next;j++;}if(node){newnode = malloc(sizeof(*newnode));if(newnode == NULL)return -2;newnode->data = *data;//newnode->data = NULL;newnode->next = node->next;node->next = newnode;return 0;}else return -3;
}
int list_order_insert(list *me,datatype *data)
{list *p = me,*q;while(p->next  && p->next->data < *data)p = p->next;q = malloc(sizeof(*q));if(q = NULL)return -1;q->data = *data;q->next = p->next;p->next = q;return 0;}
int list_delete_at(list *me,int i,datatype *data)
{int j =0;list *p =me,*q;if(i<0)return -1;*data = -1;while(j < i){p = p->next;j++;}if(p){q= p->next;p->next = q->next;*data = q->data;free(q);	q= NULL;return 0;}elsereturn -2;
}
int list_delete(list *me,datatype *data)
{list *p = me,*q;while(p->next && p->next->data != *data)p = p->next;if(p->next == NULL)return -1;else{q = p->next;p->next = q->next;free(q);q = NULL;} }
int list_isempty(list *me)
{if(me->next == NULL)return 0;return 1;
}
void list_display(list *me)
{list *node = me->next;if(list_isempty(me)==0)return ;while(node !==NULL){printf("%d ",node->data);node = node->next;}printf("\n");return ;
}
void list_destory(list *me)
{list *node,*next;for(node = me->next;node !=	NULL;node = next){next = node->next;free(node);}free(me);return ;
}

main.c

#include<stdio.h>
#include<stdlib.h>#include"list.h"int main()
{datatype arr[] = {12,9,23,2,34,6,45};list *l;int i;l = list_create();if(l == NULL)exit(1);for(i = 0;i<sizeof(arr)/sizeof(*arr);i++){if(list_order_insert(l,&arr[i]))//if(list_insert_at(l,0,&arr[i]))exit(1);}list_display(l);//int value = 12;//list_delete(l,&value);//list_display(l);int err;datatype value;err = list_delete_at(l,2,&value);if(err)exit(1);list_display(l);printf("delete:%d\n",value);list_destroy(l);exit(0);
}

makefile

all:mainmain:main.o list.o$(CC) $^ -o $@clean:rm *.o main -rf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将富文本编辑器中的H标签处理成树形结构,支持无限层级

做富文本编辑器时&#xff0c;需要将文本里的标题整理成树形数据&#xff0c; // 这里是数据结构 const data [{"id": "hkyrq2ndc-36yttda0lme00","text": "阿萨德阿萨德阿萨","level": 1,"depth": 1,},{"…

Window Linux 权限提升

#基础点&#xff1a; 0、为什么我们要学习权限提升转移技术&#xff1a; 简单来说就是达到目的过程中需要用到它 心里要想着我是谁 我在哪 我要去哪里 1、具体有哪些权限需要我们了解掌握的&#xff1a; 后台权限&#xff0c;数据库权限&#xff0c;Web权限&#xff0c;用户权…

【VTKExamples::Texture】第六期 TextureThreshold

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TextureThreshold,并解析接口vtkTexture,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~Y…

127.数据异构方案

文章目录 前言一、数据异构的常用方法1. 完整克隆2. MQ方式3. binlog方式 二、MQ与Binlog方案实现MQ方式binlog方式注意点 三、总结 前言 何谓数据异构&#xff1a;把数据按需&#xff08;数据结构、存取方式、存取形式&#xff09;异地构建存储。比如我们将DB里面的数据持久化…

Android 安全补丁介绍

Android 安全补丁介绍 每月安全补丁更新&#xff1a;https://source.android.com/docs/security/bulletin CEV 全称&#xff1a; Common Vulnerabilities and Exposures (CVE) 常见漏洞和暴露 (CVE) 安全补丁版本查看&#xff1a;设置&#xff0c;关于手机&#xff0c;Andro…

前端基础入门三大核心之HTML篇:无序列表的深度探索

前端基础入门三大核心之HTML篇&#xff1a;无序列表的深度探索 一、无序列表基础概念与作用1.1 什么是无序列表&#xff1f;1.2 无序列表的作用 二、基本用法与代码示例2.1 最简单的无序列表2.2 添加自定义样式 三、进阶应用与技巧3.1 列表嵌套3.2 利用CSS实现复杂布局3.3 安全…

云和恩墨海外首秀在吉隆坡召开的2024中国智能科技与文化展览会

作为中马建交50周年官方重点推荐的活动之一&#xff0c;2024中国智能科技与文化展览会&#xff08;第四届&#xff09;于5月20至21日在毗邻吉隆坡双子塔的吉隆坡国际会展中心举办。本次展览会获得马来西亚科学技术创新部、马来西亚通讯部、中国驻马来西亚大使馆和马来西亚中华总…

【Linux学习】进程地址空间与写时拷贝

文章目录 Linux进程内存布局图&#xff1a;内存布局的验证 进程地址空间写时拷贝 Linux进程内存布局图&#xff1a; 地址空间的范围&#xff0c;在32位机器上是2^32比特位,也就是[0,4G]。 内存布局的验证 代码验证内存布局&#xff1a; 验证代码&#xff1a; #include<s…

linux系统安全加固

目录 1、账户安全基本措施 1&#xff09;系统账户清理 2&#xff09;密码安全控制 3&#xff09;命令历史限制 2、用户切换及提权 1&#xff09;使用 su命令切换用户 2&#xff09;使用sudo机制提升权限 3、系统引导和安全登录控制 1&#xff09;开机安全控制 2&…

头歌实践教学平台:Junit实训入门篇

第2关&#xff1a;Junit注解 任务描述 给出一个带有注解的Junit代码及其代码打印输出&#xff0c;要求学员修改注解位置&#xff0c;让输出结果变为逆序。 相关知识 Junit注解 Java注解&#xff08;(Annotation&#xff09;的使用方法是" 注解名" 。借助注解&a…

python数据处理与分析入门-Pandas数据可视化例子

相关内容 Matplotlib可视化练习 Pandas 数据可视化总结 柱状图 reviews[points].value_counts().sort_index().plot.bar()散点图 reviews[reviews[price] < 100].sample(100).plot.scatter(xprice, ypoints)蜂窝图 reviews[reviews[price] < 100].plot.hexbin(xprice…

Helm安装kafka3.7.0无持久化(KRaft 模式集群)

文章目录 2.1 Chart包方式安装kafka集群 5.开始安装2.2 命令行方式安装kafka集群 搭建 Kafka-UI三、kafka集群测试3.1 方式一3.2 方式二 四、kafka集群扩容4.1 方式一4.2 方式二 五、kafka集群删除 参考文档 [Helm实践---安装kafka集群 - 知乎 (zhihu.com)](https://zhuanlan.…

virtualbox共享文件夹没有访问权限

设置好共享文件夹之后&#xff0c;进入虚拟机&#xff0c;共享文件夹的地址是/media/sf_shared。 想要使用cd命令进入该文件夹时&#xff0c;你可能会发现此文件夹无法访问&#xff0c;系统提示的原因是权限不足。 在虚拟机下查看共享文件夹的属性&#xff0c;发现该目录的所…

Nginx - 健康检查终极指南:探索Upstream Check模块

文章目录 概述upstream_check_module模块安装和配置指南模块安装步骤基本配置示例详细配置说明检查类型和参数常见问题及解决方案 SSL检查和DNS解析功能SSL检查配置示例和说明配置示例 DNS解析配置示例和说明配置示例 结合实际应用场景的高级配置示例综合SSL检查与DNS解析 总结…

Doris【部署 03】Linux环境Doris数据库部署异常问题收集解决(不断更新)

Linux环境Doris数据库部署异常问题 1.FE1.1 Unknown system variable character_set_database1.2 notify new FE type transfer: UNKNOWN1.3 mysql_load_server_secure_path1.4 Only unique table could be updated1.5 too many filtered rows 2.BE2.1 Have not get FE Master …

python:大文件分批/块导入数据库方式记录

一、问题背景 对于数据文件比较大的数据&#xff0c;一次性串联sql进行入库&#xff0c;往往会受到数据库本身对sql长度的限制&#xff0c;从而需要分块或者分批次&#xff0c;将大数据文件一点一点的进行入库。特针对这种入库方式&#xff0c;进行一个简单记录&#xff0c;各…

spring的控制反转(IoC)容器作用是什么?

控制反转&#xff08;Inversion of Control&#xff0c;IoC&#xff09;容器是一种强大的设计模式&#xff0c;在现代软件开发&#xff0c;特别是在使用Spring框架等企业级Java应用中至关重要。IoC容器主要作用是管理应用程序中对象的生命周期和依赖关系。我会逐步解释它的作用…

YOLOv8改进 | 主干网络 | 增加网络结构增强小目标检测能力【独家创新——附结构图】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 在目标检测领域内,尽管YOLO系列的算法傲视群雄,但在某些方面仍然存在改进的空间。在YOLOv8提取特征的时候,由于卷积的缘故,会导致很多信息的丢失。对于小目标来说更是如此,这样将大幅度降低小目标的检测能…

pinpoint服务监控

Pinpoint是一个开源的APM&#xff08;应用性能管理&#xff09;系统&#xff0c;主要用于监控和管理Java应用程序的性能。它提供了实时的性能指标、分布式追踪和诊断等功能&#xff0c;帮助开发和运维快速定位和解决应用程序中的性能问题。 pinpoint其他部分不变&#xff0c;H…

正确可用--Notepad++批量转换文件编码为UTF8

参考了:Notepad批量转换文件编码为UTF8_怎么批量把ansi转成utf8-CSDN博客​​​​​​https://blog.csdn.net/wangmy1988/article/details/118698647我参考了它的教程,但是py脚本写的不对. 只能改一个.不能实现批量更改. 他的操作步骤没问题,就是把脚本代码换成我这个. #-*-…