数据结构---单向链表

单向链表 
//链表的创建
Link_t *create_link()
{Link_t *plink = malloc(sizeof(Link_t));if(NULL == plink){perror("fail plink");return NULL;}plink->phead = NULL;plink->clen = 0;return plink;
}
//头插
int push_link_head(Link_t *plink, DataType data)
{Link_Node_t *pnode = malloc(sizeof(Link_Node_t));if(NULL == pnode){perror("fail malloc");return -1;}pnode->data = data;pnode->pnext = NULL;pnode->pnext = plink->phead;plink->phead = pnode;plink->clen++;return 0;
}
//尾插
int push_link_end(Link_t *plink, DataType data)
{Link_Node_t *p = plink->phead;if(p == NULL){push_link_head(plink, data);}else{while(p->pnext != NULL){p = p->pnext;}Link_Node_t *pnode = malloc(sizeof(Link_Node_t));if(NULL == pnode){perror("fail pnode");return -1;}p->pnext = pnode;pnode->pnext = NULL;pnode->data = data;plink->clen++;}return 0;
}
//头删
int push_head_pop(Link_t *plink)
{Link_Node_t *p = plink->phead;if(p == NULL){return 0;}else{plink->phead = p->pnext;free(p);}plink->clen--;return 1;
}
//尾删
int push_end_pop(Link_t *plink)
{Link_Node_t *p = plink->phead;if(p == NULL){return 0;}else if(p->pnext == NULL){push_head_pop(plink);}else{while(p->pnext->pnext != NULL){p = p->pnext;}free(p->pnext);p->pnext = NULL;plink->clen--;}return 1;
}
在进行排序时,一次遍历结束指针指到了结尾,要重新把指针归到头节点,否则排序不成功。
//排序
void push_sort(Link_t *plink)
{if(1 == plink->clen || plink->phead == NULL){return;}Link_Node_t *pinsert = NULL;Link_Node_t *ptmp = plink->phead->pnext;plink->phead->pnext = NULL;while(ptmp != NULL){Link_Node_t *p = plink->phead;pinsert = ptmp;ptmp = ptmp->pnext;if(p->data > pinsert->data){pinsert->pnext = plink->phead;plink->phead = pinsert;}else{while(p->pnext != NULL && p->pnext->data < pinsert->data){p = p->pnext;}pinsert->pnext = p->pnext;p->pnext = pinsert;}}
}
相关文章:
数据结构---单向链表
单向链表 //链表的创建 Link_t *create_link() {Link_t *plink malloc(sizeof(Link_t));if(NULL plink){perror("fail plink");return NULL;}plink->phead NULL;plink->clen 0;return plink; } //头插 int push_link_head(Link_t *plink, DataType data…...
基于STM32设计的ECG+PPG人体参数测量系统(华为云IOT)(217)
文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路【4】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】项目背景1.4 开发…...
SpringBoot教程(十五) | SpringBoot集成RabbitMq(死信队列、延迟队列)
SpringBoot教程(十五) | SpringBoot集成RabbitMq(死信队列、延迟队列) (一)死信队列使用场景具体用法前提示例: (二)延迟队列使用场景方法一:通过死亡队列实现方法二&…...
Dubbo依赖包
Dubbo 是一个高性能的 RPC 框架,用于构建分布式服务治理系统。要使用 Dubbo,项目中需要引入一些关键的依赖包。这些依赖包提供了 Dubbo 的核心功能、服务注册与发现、网络通信、序列化等能力。 一、Dubbo 核心依赖包 Dubbo 的核心依赖包包含了实现 RPC…...
webGIS后端程序员学习路线
webGIS后端程序员学习路线 1. GIS 基础知识 学习要点: 学习资源: 2. 后端编程基础 学习要点: 学习资源: 3. 地理数据库(Spatial Database) 学习要点: 学习资源: 4. 空间数…...
OpenCV绘图函数(15)图像上绘制矩形函数 rectangle()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 绘制一个简单的、粗的或填充的直立矩形。 这个函数 cv::rectangle 绘制一个矩形轮廓或一个填充的矩形,其两个相对的顶点分别是 pt1 和…...
从零开始,认识游戏设计师(4)体验源于设计师②
认真并仔细地揣摩你的想法 了解自己的感受并不是一件简单的事情,作为设计师,我觉得比了解玩家总体感觉的技能更重要的是你能清楚知道描述自己感受。 试想一下,你是否能准确描述你喜欢什么,你讨厌什么,以及为什么这样…...
周末总结(2024/09/07)
工作 人际关系核心实践: 要学会随时回应别人的善意,执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己,抬高别人(无阴阳气息) 朋友圈点赞控制在5min以内,职场社交不要放在5min以外 职场的人际关系在面对利…...
MySQL数据库的SQL注入漏洞解析
说明:本文仅是用于学习分析自己搭建的SQL漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《中华人民共和国网络安全法》及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 …...
Redis进阶(七):分布式锁
在分布式系统下,涉及到多个节点访问同一个公共资源的情况,此时需要通过 锁 进行互斥控制:避免出现 线程安全问题。 1.分布式锁的基本实现 超卖问题: 解决: 采用redis实现分布式锁 可用采取:在购票的时候࿰…...
Python 中考虑 concurrent.futures 实现真正的并行计算
Python 中考虑 concurrent.futures 实现真正的并行计算 思考,如何将代码所要执行的计算任务划分成多个独立的部分并在各自的核心上面平行地运行。 Python 的全局解释器锁(global interpreter lock,GIL)导致没办法用线程来实现真…...
【C++多线程编程】 线程安全与对象生命周期管理
目录 类的线程安全 实现线程安全 构造函数在多线程中的安全性 析构函数多线程环境的安全 智能指针实现多线程安全 shared_ptr 非完全线程安全 shared_ptr可能导致对象生命周期延长 const引用可以减少传递shared_ptr开销 shared_ptr 智能指针块模块的优点 析构所在线程…...
【系统架构设计师-2024年-上半年】综合知识-答案及详解
更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16~17题】【第18~19题】【第20~21题】【第22题】【第23题】…...
MATLAB 中的对数计算
在 MATLAB 中,计算对数是进行数学分析和科学计算的常见需求。对数运算在数据分析、信号处理和控制系统中都有广泛应用。本篇博客将详细介绍如何在 MATLAB 中进行对数计算,包括自然对数、常用对数以及任意底数的对数。 1. 自然对数(以 e 为底…...
详解 HTTPS 与 TLS证书链校验
一文详解 HTTPS 与 TLS证书链校验_证书链怎么验证-CSDN博客 深入浅出 SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr) https://zhuanlan.zhihu.com/p/702745054...
新手做短视频素材在哪里找?做短视频素材工具教程网站有哪些?
本文将为你提供一系列新手友好的视频制作资源,包括素材网站和编辑工具,帮助你快速成为短视频领域的新星。让我们从国内知名的蛙学网开始介绍。 蛙学网:新手的视频素材天堂 对于短视频新手而言,蛙学网绝对是一个宝库。该网站提供了…...
【html】编辑器、基础、属性、标题、段落、格式化、 连接、头部、CSS、图像
目录 2.HTML编辑器 3.HTML基础 3.1 HTML标题 3.2 段落 4.HTML元素 4.1 元素语法 4.2 嵌套元素 4.3 HTML空元素 4.4 HTML提示,使用小写标签 5.HTML属性 5.1 属性实例 5.2 HTML 属性常用引用属性值 5.3 使用小写属性 5.4 HTML属性参考手册 6.HTML标题 6.1 HTML水…...
算法【洪水填充】
洪水填充是一种很简单的技巧,设置路径信息进行剪枝和统计,类似感染的过程。路径信息不撤销,来保证每一片的感染过程可以得到区分。看似是暴力递归过程,其实时间复杂度非常好,遍历次数和样本数量的规模一致。 下面通过…...
PostgreSQL的repmgr工具介绍
PostgreSQL的repmgr工具介绍 repmgr(Replication Manager)是一个专为 PostgreSQL 设计的开源工具,用于管理和监控 PostgreSQL 的流复制及实现高可用性。它提供了一组工具和实用程序,简化了 PostgreSQL 复制集群的配置、维护和故障…...
面试官:synchronized的锁升级过程是怎样的?
大家好,我是大明哥,一个专注「死磕 Java」系列创作的硬核程序员。 回答 在 JDK 1.6之前,synchronized 是一个重量级、效率比较低下的锁,但是在JDK 1.6后,JVM 为了提高锁的获取与释放效,,对 synchronized 进…...
B站字幕高效下载指南:轻松获取双语字幕的实用工具
B站字幕高效下载指南:轻松获取双语字幕的实用工具 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 还在为无法保存B站视频字幕而烦恼吗?Bil…...
大麦网抢票自动化工具:5分钟快速上手完整指南
大麦网抢票自动化工具:5分钟快速上手完整指南 【免费下载链接】damaihelper 支持大麦网,淘票票、缤玩岛等多个平台,演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper 你是否曾经因为抢不到心仪的演唱会门…...
甲言(Jiayan):终极古汉语NLP工具包的完整使用指南
甲言(Jiayan):终极古汉语NLP工具包的完整使用指南 【免费下载链接】Jiayan 甲言,专注于古代汉语(古汉语/古文/文言文/文言)处理的NLP工具包,支持文言词库构建、分词、词性标注、断句和标点。Jiayan, the 1st NLP toolk…...
突破B站缓存限制:m4s-converter让视频资源自由流动
突破B站缓存限制:m4s-converter让视频资源自由流动 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 在数字内容爆炸的时代,…...
六自由度工业机器人设计【说明书(论文)+CAD图纸+SolidWorks三维图+任务书+开题报告】
六自由度工业机器人作为现代自动化领域的核心装备,其设计需兼顾机械结构、运动控制与系统集成等多维度技术要求。该类机器人通过六个独立旋转轴的协同运动,可实现末端执行器在三维空间内的灵活定位与姿态调整,广泛应用于焊接、装配、搬运等工…...
OpenClaw+Qwen3-14b_int4_awq:个人博客自动化更新方案
OpenClawQwen3-14b_int4_awq:个人博客自动化更新方案 1. 为什么需要博客自动化更新 作为一个技术博主,我经常遇到这样的困境:好不容易挤出时间写完一篇技术文章,却因为各种琐事耽误了发布。要么是忘记更新Hexo的front matter&am…...
Qt图形界面开发:Phi-3-mini生成UI代码片段与信号槽连接示例
Qt图形界面开发:Phi-3-mini生成UI代码片段与信号槽连接示例 1. 引言:当AI遇上Qt界面开发 作为一名Qt开发者,你是否经常陷入这样的困境:每次新建一个对话框或窗口,都要重复编写相似的UI初始化代码?特别是当…...
1 (带目录)鸿蒙系统底层接口快速接入指南 | 鸿蒙开发筑基实战
鸿蒙系统底层接口快速接入指南 | 鸿蒙开发筑基实战 作者:杨建宾(华夏之光永存) 系列完整目录(鸿蒙生态开发实战进阶全集・轻量进阶版) 第一章:鸿蒙基础适配篇(本文) 1 鸿蒙系统底层接…...
Qwen3-14B API服务压测报告:QPS 23+,P99延迟<1.2s高并发表现
Qwen3-14B API服务压测报告:QPS 23,P99延迟<1.2s高并发表现 1. 测试环境与配置 1.1 硬件配置 本次压测采用专门优化的Qwen3-14B私有部署镜像,运行在以下硬件环境: GPU:RTX 4090D 24GB显存(与镜像完美…...
解决TranslucentTB中文显示异常的深度指南
解决TranslucentTB中文显示异常的深度指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB是一款能让Windows任务栏实现半透…...
