尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
第28讲:单链表的应用
目录单链表经典算法OJ题目单链表相关经典算法OJ题1移除链表元素单链表相关经典算法OJ题2反转链表单链表相关经典算法OJ题3合并两个有序链表单链表相关经典算法OJ题4链表的中间结点循环链表经典应用-环形链表的约瑟夫问题单链表相关经典算法OJ题5分割链表基于单链表再实现通讯录项目单链表经典算法1. 链表经典算法OJ题目1.1 单链表相关经典算法OJ题1移除链表元素1.2 单链表相关经典算法OJ题2反转链表1.3 单链表相关经典算法OJ题3合并两个有序链表1.4 单链表相关经典算法OJ题4链表的中间结点1.5 循环链表经典应用-环形链表的约瑟夫问题著名的Josephus问题据说著名犹太历史学家 Josephus 有过以下的故事在罗马人占领乔塔帕特后39 个犹太人与 Josephus 及他的朋友躲到一个洞中39 个犹太人决定宁愿死也不要被人抓到于是决定了一个自杀方式41 个人排成一个圆圈由第 1 个人开始报数每报数到第 3 人该人就必须自杀然后再由下一个重新报数直到所有人都自杀身亡为止。然而 Josephus 和他的朋友并不想遵从Josephus 要他的朋友先假装遵从他将朋友与自己安排在第 16 个与第 31 个位置于是逃过了这场死亡游戏。1.6 单链表相关经典算法OJ题5分割链表基于单链表再实现通讯录项目SList.h//SList.h//// Created by mm on 2023/6/13.//#includestdio.h#includestdlib.h#includeassert.h#includecontact.htypedefstructPersonInfoSLTDataType;//typedef int SLTDataType;structSListNode{structSListNode*next;SLTDataType data;}voidSLTPrint(SLTNode*phead);//头部插入删除/尾部插入删除voidSLTPushBack(SLTNode**pphead,SLTDataType x);voidSLTPushFront(SLTNode**pphead,SLTDataType x);voidSLTPopBack(SLTNode**pphead);voidSLTPopFront(SLTNode**pphead);//查找SLTNode*SLTFind(SLTNode*phead,SLTDataType x);//在指定位置之前插入数据voidSLTInsert(SLTNode**pphead,SLTNode*pos,SLTDataType x);//删除pos节点voidSLTErase(SLTNode**pphead,SLTNode*pos);//在指定位置之后插入数据voidSLTInsertAfter(SLTNode*pos,SLTDataType x);//删除pos之后的节点voidSLTEraseAfter(SLTNode*pos);//销毁链表voidSListDesTroy(SLTNode**pphead);contact.h//contact.h#pragmaonce#defineNAME_MAX100#defineSEX_MAX4#defineTEL_MAX11#defineADDR_MAX100//前置声明typedefstructSListNodecontact;//用户数据typedefstructPersonInfo{charname[NAME_MAX];charsex[SEX_MAX];intage;chartel[TEL_MAX];charaddr[ADDR_MAX];}PeoInfo;//初始化通讯录voidInitContact(contact**con);//实际调用的是链表的初始化接口可以简单做一个头结点的初始化//添加通讯录数据voidAddContact(contact**con);// 链表尾插/头插//删除通讯录数据voidDelContact(contact**con);//链表的删除指定位置的数据//展示通讯录数据voidShowContact(contact*con);//链表的打印//查找通讯录数据voidFindContact(contact*con);//修改通讯录数据voidModifyContact(contact**con);//销毁通讯录数据voidDestroyContact(contact**con);contact.c#define_CRT_SECURE_NO_WARNINGS#includecontact.h#includeSList.hvoidLoadContact(contact**con){FILE*pffopen(contact.txt,rb);if(pfNULL){perror(fopen error!\n);return;}//循环读取文件数据PeoInfo info;while(fread(info,sizeof(info),1,pf)){SLTPushBack(con,info);}printf(历史数据导入通讯录成功\n);}voidInitContact(contact**con){LoadContact(con);//把本地的通讯录数据导入到链表结构}voidAddContact(contact**con){PeoInfo info;printf(请输入姓名\n);scanf(%s,info.name);printf(请输入性别\n);scanf(%s,info.sex);printf(请输入年龄\n);scanf(%d,info.age);printf(请输入联系电话\n);scanf(%s,info.tel);printf(请输入地址\n);scanf(%s,info.addr);SLTPushBack(con,info);printf(插入成功\n);}contact*FindByName(contact*con,charname[]){contact*curcon;while(cur){if(strcmp(cur-data.name,name)0){returncur;}curcur-next;}returnNULL;}voidDelContact(contact**con){charname[NAME_MAX];printf(请输入要删除的用户姓名\n);scanf(%s,name);contact*posFindByName(*con,name);if(posNULL){printf(要删除的用户不存在删除失败\n);return;}SLTErase(con,pos);printf(删除成功\n);}voidShowContact(contact*con){printf(%-10s %-4s %-4s %15s %-20s\n,姓名,性别,年龄,联系电话,地址);contact*curcon;while(cur){printf(%-10s %-4s %-4d %15s %-20s\n,cur-data.name,cur-data.sex,cur-data.age,cur-data.tel,cur-data.addr);curcur-next;}}voidFindContact(contact*con){charname[NAME_MAX];printf(请输入要查找的用户姓名\n);scanf(%s,name);contact*posFindByName(con,name);if(posNULL){printf(要查找的用户不存在查找失败\n);return;}printf(查找成功\n);printf(%-10s %-4s %-4d %15s %-20s\n,pos-data.name,pos-data.sex,pos-data.age,pos-data.tel,pos-data.addr);}voidModifyContact(contact**con){charname[NAME_MAX];printf(请输入要修改的用户名称:\n);scanf(%s,name);contact*posFindByName(*con,name);if(posNULL){printf(要查找的用户不存在修改失败\n);return;}printf(请输入要修改的姓名\n);scanf(%s,pos-data.name);printf(请输入要修改的性别\n);scanf(%s,pos-data.sex);printf(请输入要修改的年龄\n);scanf(%d,pos-data.age);printf(请输入要修改的联系电话\n);scanf(%s,pos-data.tel);printf(请输入要修改的地址\n);scanf(%s,pos-data.addr);printf(修改成功\n);}voidSaveContact(contact*con){FILE*pffopen(contact.txt,wb);if(pfNULL){perror(fopen error!\n);return;}//将通讯录数据写入文件contact*curcon;while(cur){fwrite((cur-data),sizeof(cur-data),1,pf);curcur-next;}printf(通讯录数据保存成功\n);}voidDestroyContact(contact**con){SaveContact(*con);//在通讯录销毁之前先把历史数据保存到本地文件中contact.txtSListDesTroy(con);}
RELATED

相关推荐

BCGControlBar Pro 22.1 适配指南:从加载链路到稳定运行

BCGControlBar Pro 22.1 适配指南:从加载链路到稳定运行

简介:本资源为BCGControlBar Pro 22.1的破解版本V4,面向使用MFC进行界面开发的C程序员,尤其是需要在VC6至VC2010等多版本编译环境下集成专业界面库的开发者。包内共约2000个文件,以png位图资源、h头文件、cpp源文件为主&#xff0…

📅 2026/10/15 15:32:23
文物3D扫描采集系统选型与集成:固定+手持双链路技术方案

文物3D扫描采集系统选型与集成:固定+手持双链路技术方案

文物3D扫描采集系统选型与集成:固定手持双链路技术方案 摘要:文博3D数字化系统的采集层需要同时覆盖小件高精度固定采集与大型/不可移动文物手持采集两类场景。本文设计一套固定手持双链路采集架构:Magic Cube固定式(0.01mm精度、…

📅 2026/10/15 15:32:23
STM32 MODBUS RTU主机实现:状态机轮询调度与RS485通信避坑指南

STM32 MODBUS RTU主机实现:状态机轮询调度与RS485通信避坑指南

简介:面向工业自动化与嵌入式通信开发者,这是一份基于STM32实现Modbus RTU主机模式的源码包,覆盖从UART参数配置、Modbus帧结构到主机功能实现的完整思路。资源围绕波特率、数据位、停止位、校验位设置以及功能码请求、响应解析、异常处理和重…

📅 2026/10/15 15:32:23
MORE NEWS

更多资讯

📰

FPGA软核MicroBlaze实战:从点灯到串口打印的完整指南

简介:这份资源面向FPGA与嵌入式SoC初学者,围绕Xilinx Microblaze软核处理器,在VIVADO与SDK环境下完成流水灯控制与串口打印Hello World两个经典入门实验,帮助读者打通硬件平台搭建、GPIO与UART外设配置、C程序编写到比特流下载的完…

📰

bk-cmdb 业务集拓扑查询接口 list_business_set_topo 完整指南:参数、原理与实战

后端企业应用运维 【免费下载链接】bk-cmdb 蓝鲸智云配置平台(BlueKing CMDB) 项目地址: https://gitcode.com/gh_mirrors/bk/bk-cmdb 点击查看 免费下载 业务集(Business Set)是蓝鲸智云配置平台(bk-cmdb)用于跨业务…

📰

使用 Jsonnet 配置 Grafana Mimir 的 ruler 组件

时序数据库后端数据存储可观测性云原生 【免费下载链接】mimir Grafana Mimir provides horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus. 项目地址: https://gitcode.com/gh_mirrors/mimir/mimir 点击查看 免费下载 本…

📰

10个SketchForge效率技巧:视角切换、网格吸附与快速建模,你应该掌握的实战细节

【免费下载链接】SketchForge-3D A local-first browser 3D design editor for building, cutting, importing STL files, and exporting models. 项目地址: https://gitcode.com/gh_mirrors/sk/SketchForge-3D 点击查看 免费下载 SketchForge 是一款 local-first …

📰

UCGUI矢量字库移植:TrueType解析与动态缩放渲染实践

简介:面向嵌入式GUI开发者的ucGUI矢量字库支持包,专注于解决资源受限环境下无法直接使用TrueType(TTF)矢量字体的痛点,适用于需要多语言、多字号及抗锯齿文本显示的小型交互设备。资源围绕字体解析、点阵生成、内存管理…

📰

税制变更前的影子账套回归:代账 pipeline 怎么在规则上线前先跑一遍

作者按:前几篇把 bookkeeping pipeline 拆到供给架构、failure mode、数电票/四流、ERP 对接、observability、WORM、可移植性、PII/RBAC、incident response、多租户隔离、票据 pipeline、规则引擎版本化。这一篇接规则版本化往下挖一层——规则改完不是 merge 就完…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬