当前位置: 首页 > news >正文

单向链表的操作

一、基本操作补充

1、查找倒数第k个结点

Link_Node_t *find_num_link(Link_t *link,DATATYPE cnt)
{if(link->phead == NULL){return NULL;}Link_Node_t *pfast = link->phead;Link_Node_t *pslow = link->phead;while(cnt != 0){if(NULL == pfast){return NULL;}pfast = pfast->pnext;--cnt;}while(pfast != NULL){pslow = pslow->pnext;pfast = pfast->pnext;}return pslow;
}

2、链表倒置

int convert_link(Link_t *link)
{if(link->phead == NULL){return -1;}Link_Node_t *ptempt = link->phead;link->phead = NULL;Link_Node_t *pinsert = NULL;while(ptempt != NULL){pinsert = ptempt;ptempt = ptempt->pnext;pinsert->pnext = link->phead;link->phead = pinsert;}return 0;
}

3、删除指定的结点

int pop_point_node(Link_t *plink,int key)
{if (is_empty_link(plink))return 0;Link_Node_t *pdel = plink->phead;Link_Node_t *ppre = NULL;while (pdel != NULL){if (pdel->data == key){//delif (plink->phead == pdel){pop_link_head(plink);}else{ppre->pnext = pdel->pnext;free(pdel);plink->clen--;}return 1;}else{ppre = pdel;pdel = pdel->pnext;}}return 0;}

 4、插入排序

int insert_sort_link(Link_t *link)
{if(link->phead == NULL){return -1;}Link_Node_t *pnode = link->phead;Link_Node_t *ptempt = pnode->pnext;pnode->pnext = NULL;Link_Node_t *p = NULL;Link_Node_t *pinsert = NULL;while(ptempt != NULL){//进行比较头结点,如果比头结点小,进行头插pinsert = ptempt;ptempt = ptempt->pnext;if(pinsert->data < link->phead->data){pinsert->pnext = link->phead;link->phead = pinsert;}else{p = link->phead;while(p->pnext != NULL && p->pnext->data < pinsert->data){p = p->pnext;}pinsert->pnext = p->pnext;p->pnext = pinsert;}}
}

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 并发高负载场景下的负载均衡优化方案
  • 心觉:如何填平想象和愿望之间的鸿沟?
  • HTTP 请求方法(method)介绍
  • 深度学习(DL)算法分分类
  • nacos适配人大金仓以及达梦-2.41
  • Golang | Leetcode Golang题解之第384题打乱数组
  • HarmonyOS NEXT开发:UI导航栏组件-NavigationBarView
  • 【JS】如何给fetch添加超时功能
  • 【MySQL】如何优化 SQL UPDATE 语句以提升性能
  • 录制黑神话:悟空背景音,制霸你的手机铃声(游戏录制教程)
  • Codeforces Round 970 (Div. 3)
  • 什么是外卖霸王餐系统?有什么特点?
  • 怎么用golang实现一个简易版c++的FIFO队列?
  • Vue——认识day05_监视属性
  • Apifox使用学习
  • C++入门教程(10):for 语句
  • java正则表式的使用
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • leetcode-27. Remove Element
  • Linux各目录及每个目录的详细介绍
  • SpringCloud集成分布式事务LCN (一)
  • uva 10370 Above Average
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 技术:超级实用的电脑小技巧
  • 听说你叫Java(二)–Servlet请求
  • 微信小程序填坑清单
  • 学习ES6 变量的解构赋值
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 【云吞铺子】性能抖动剖析(二)
  • ​决定德拉瓦州地区版图的关键历史事件
  • #git 撤消对文件的更改
  • #pragma data_seg 共享数据区(转)
  • #pragma multi_compile #pragma shader_feature
  • $(selector).each()和$.each()的区别
  • (1)svelte 教程:hello world
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (3)(3.5) 遥测无线电区域条例
  • (4)STL算法之比较
  • (笔试题)合法字符串
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (十)c52学习之旅-定时器实验
  • (十三)MipMap
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)、python程序--模拟电脑鼠走迷宫
  • (转)ABI是什么
  • ***详解账号泄露:全球约1亿用户已泄露
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .cfg\.dat\.mak(持续补充)
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 4.0中的泛型协变和反变
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net SqlSugarHelper