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

2.4 静态链表

#include stdio.h#include malloc.h// 默认链表容量#define DEFAULT_SIZE 5typedef struct StaticLinkedNode{char data;int next;} *NodePtr;typedef struct StaticLinkedList{NodePtr nodes;int* used;} *ListPtr;/*** 初始化静态链表带头节点* return 链表结构体指针*/ListPtr initLinkedList(){// 申请链表结构体空间ListPtr tempPtr (ListPtr)malloc(sizeof(struct StaticLinkedList));// 为节点数组和状态数组分配内存tempPtr-nodes (NodePtr)malloc(sizeof(struct StaticLinkedNode) * DEFAULT_SIZE);tempPtr-used (int*)malloc(sizeof(int) * DEFAULT_SIZE);// 下标0的节点作为头节点tempPtr-nodes[0].data \0;tempPtr-nodes[0].next -1;// 初始状态只有头节点被占用tempPtr-used[0] 1;for (int i 1; i DEFAULT_SIZE; i ){tempPtr-used[i] 0;}return tempPtr;}/*** 打印链表中的所有数据* param paraListPtr 链表指针*/void printList(ListPtr paraListPtr){int p paraListPtr-nodes[0].next;while (p ! -1) {printf(%c, paraListPtr-nodes[p].data);p paraListPtr-nodes[p].next;}printf(\r\n);}/*** 在指定位置插入元素* param paraListPtr 链表指针* param paraChar 待插入的字符* param paraPosition 插入位置*/void insertElement(ListPtr paraListPtr, char paraChar, int paraPosition){int p, q, i;// 步骤1找到插入位置的前驱节点p 0;for (i 0; i paraPosition; i ) {p paraListPtr-nodes[p].next;if (p -1) {printf(插入位置 %d 超出链表范围\r\n, paraPosition);return;}}// 步骤2分配空闲节点模拟动态内存的mallocfor (i 1; i DEFAULT_SIZE; i ){if (paraListPtr-used[i] 0){printf(已分配下标为 %d 的空间\r\n, i);paraListPtr-used[i] 1;q i;break;}}if (i DEFAULT_SIZE){printf(链表空间已满无法插入\r\n);return;}// 为新节点赋值paraListPtr-nodes[q].data paraChar;// 步骤3调整游标连接新节点printf(正在连接节点\r\n);paraListPtr-nodes[q].next paraListPtr-nodes[p].next;paraListPtr-nodes[p].next q;}/*** 删除指定元素首次出现的节点* param paraListPtr 链表指针* param paraChar 待删除的字符*/void deleteElement(ListPtr paraListPtr, char paraChar){int p, q;// p指向待删除节点的前驱节点p 0;while ((paraListPtr-nodes[p].next ! -1) (paraListPtr-nodes[paraListPtr-nodes[p].next].data ! paraChar)){p paraListPtr-nodes[p].next;}// 未找到目标元素if (paraListPtr-nodes[p].next -1) {printf(无法删除字符 %c元素不存在\r\n, paraChar);return;}// 摘下待删除节点q paraListPtr-nodes[p].next;paraListPtr-nodes[p].next paraListPtr-nodes[paraListPtr-nodes[p].next].next;// 释放节点空间模拟动态内存的freeparaListPtr-used[q] 0;}/*** 输出链表的内存与节点状态信息* param paraListPtr 链表指针*/void outputMemory(ListPtr paraListPtr) {int i;printf(输出链表内存信息\r\n);printf(链表结构体地址%ld\r\n, paraListPtr);printf(节点数组地址%ld\r\n, paraListPtr-nodes);printf(状态数组地址%ld\r\n, paraListPtr-used);printf(内存内容格式[数据, 游标, 使用状态]\r\n);for (i 0; i DEFAULT_SIZE; i ) {printf([%c, %d, %d]\r\n, paraListPtr-nodes[i].data, paraListPtr-nodes[i].next, paraListPtr-used[i]);}}/*** 单元测试测试插入、删除功能*/void appendInsertDeleteTest(){// 步骤1初始化空链表ListPtr tempList initLinkedList();printList(tempList);outputMemory(tempList);// 步骤2依次插入字符insertElement(tempList, H, 0);outputMemory(tempList);insertElement(tempList, e, 1);outputMemory(tempList);insertElement(tempList, l, 2);outputMemory(tempList);insertElement(tempList, l, 3);outputMemory(tempList);insertElement(tempList, o, 4);printList(tempList);// 步骤3删除指定字符printf(删除字符 e\r\n);deleteElement(tempList, e);outputMemory(tempList);printf(删除字符 a\r\n);deleteElement(tempList, a);printf(删除字符 o\r\n);deleteElement(tempList, o);printList(tempList);// 再次插入测试insertElement(tempList, x, 2);printList(tempList);// 最终内存状态outputMemory(tempList);}/*** 主函数程序入口*/int main(){appendInsertDeleteTest();return 0;}

相关文章:

2.4 静态链表

#include <stdio.h> #include <malloc.h>// 默认链表容量 #define DEFAULT_SIZE 5typedef struct StaticLinkedNode{char data;int next; } *NodePtr;typedef struct StaticLinkedList{NodePtr nodes;int* used; } *ListPtr;/*** 初始化静态链表&#xff08;带头节…...

支付宝上线AI付,让众多“龙虾”实现收钱,详细开通步骤

大家好&#xff0c;我是小悟。 支付宝给“龙虾”装上了AI付功能。“龙虾”火到现在&#xff0c;应该都知道是啥&#xff0c;业内对OpenClaw这类AI智能体的称呼。它们能像真人一样帮你查资料、订机票、甚至购物下单。 现在&#xff0c;这些智能体连收钱都能自己搞定了。以前用AI…...

测试说明文章

测试测试测试...

不止于分配IP:用Ubuntu DHCP服务器玩转Option 43和IPv6,搞定特殊设备自动发现

不止于分配IP&#xff1a;用Ubuntu DHCP服务器玩转Option 43和IPv6&#xff0c;搞定特殊设备自动发现 当你以为DHCP只是用来分配IP地址的工具时&#xff0c;其实它隐藏着更多可能性。想象一下这样的场景&#xff1a;新接入网络的无线控制器能够自动获取配置参数&#xff0c;IPv…...

商品结构需要重排跨境卖家如何选择先优化哪一类

破局与深耕&#xff1a;跨境卖家商品结构的战略优化之道在跨境电商的竞技场上&#xff0c;卖家时常会面临一个核心挑战&#xff1a;当店铺商品结构逐渐庞杂&#xff0c;流量分散&#xff0c;利润增长乏力时&#xff0c;如何从琳琅满目的商品库中&#xff0c;精准定位出需要优先…...

ERC PATHCHK案例分享

本文跟大家分享一下ERC(electrical rule checking)检查时的一个小案例。 ERC默认会检查gate是否连接power & ground。如果gate并未同时连接VDD和VSS,那么erc就会报如下图所示violation。 如下图所示,可以发现后一级的gate会连接在前一级mos管的drain(分别是pmos和nmo…...

VBA-JSON 指南:在Office中轻松处理JSON数据

VBA-JSON 指南&#xff1a;在Office中轻松处理JSON数据 【免费下载链接】VBA-JSON JSON conversion and parsing for VBA 项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON 你是否曾经需要在Excel或Access中处理Web API返回的数据&#xff1f;或者想要将Office数据…...

科技中介机构如何快速搭建专业的数智化服务系统?

观点作者&#xff1a;科易网-国家科技成果转化&#xff08;厦门&#xff09;示范基地一、现状概述&#xff1a;传统科技中介服务的双重困境 当前&#xff0c;我国科技中介机构在科技成果转化链条中仍面临结构性瓶颈。一方面&#xff0c;约75%的平台仍以“信息发布”为主&#x…...

DLSS Swapper终极指南:3分钟掌握游戏性能优化神器,免费提升帧率与画质

DLSS Swapper终极指南&#xff1a;3分钟掌握游戏性能优化神器&#xff0c;免费提升帧率与画质 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾因游戏画面模糊、帧率不稳而烦恼&#xff1f;当游戏开发者迟迟不更…...

别再手动改Word了!用docxtemplater的{{#each}}和{{#if}}语法,5分钟搞定批量合同生成

告别低效办公&#xff1a;用docxtemplater实现合同批量生成的终极指南 每次月底都要加班处理上百份员工合同&#xff1f;手动复制粘贴到眼花缭乱还总出错&#xff1f;作为经历过这种痛苦的企业HR&#xff0c;我发现了一个彻底改变工作方式的工具——docxtemplater。它不仅仅是一…...

8.8k星星!开源的211个专家级Agent,一键接入,一个人就是一个团队

正文开始前先简单聊聊skill。 现在大家都在用Agent&#xff0c;所以skill肯定是必要的&#xff0c;因为你也不想每次都写一大堆的提示词。 一个好用的skill&#xff0c;自己去从头写也挺费劲的&#xff0c;所以我一般想要用什么skill就现搜一个&#xff0c;再改改。 但是skill绝…...

如何高效捕获网页媒体资源?3步掌握猫抓浏览器扩展实用技巧

如何高效捕获网页媒体资源&#xff1f;3步掌握猫抓浏览器扩展实用技巧 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法保存网页上的视频…...

2026 数字孪生空间智能服务商 TOP10 综合实力榜单

评价维度&#xff1a;技术自研度、空间智能深度、全栈能力、标杆案例、市场份额、信创适配&#xff08;满分 100&#xff09; 1. 51WORLD&#xff08;五一视界&#xff0c;6651.HK&#xff09; 评分&#xff1a;95 | 定位&#xff1a;全栈自研的空间智能基础设施服务商 核心技…...

BetterJoy终极指南:5分钟让Switch手柄变身PC游戏利器

BetterJoy终极指南&#xff1a;5分钟让Switch手柄变身PC游戏利器 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/g…...

AI数据分类分级系统赋能金融行业数据治理提质增效

一、概要提示&#xff1a;本文围绕“可用&#xff08;时效性、全链路通用性&#xff09;VS合规”核心理念&#xff0c;结合金融行业数据密集、合规严苛、场景多样的核心特点&#xff0c;系统阐述知源-AI数据分类分级系统的核心逻辑、核心能力、常见疑问及发展方向&#xff0c;全…...

5分钟解锁无限试用:JetBrains IDE Eval Resetter完全指南

5分钟解锁无限试用&#xff1a;JetBrains IDE Eval Resetter完全指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为IntelliJ IDEA、PyCharm等JetBrains开发工具的试用期到期而烦恼吗&#xff1f;IDE Eval…...

从图像分割到世界模拟:3D环境构建技术演进

1. 从虚拟到现实的模拟进化十年前我第一次接触图像分割中的掩码模型时&#xff0c;完全没想到这项技术会发展成今天的世界模拟系统。记得当时为了给一张街景照片中的行人添加马赛克&#xff0c;需要手动标注数百个多边形选区。如今&#xff0c;基于物理引擎的3D环境已经能够实时…...

C# 13模式匹配到底强在哪?对比C# 12的12处关键突破,含IL反编译数据+基准测试报告(附GitHub可运行Demo)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;C# 13模式匹配增强开发全景概览 C# 13 将模式匹配能力推向新高度&#xff0c;不仅扩展了现有语法的表达力&#xff0c;还显著提升了类型安全与代码可读性。核心增强包括泛型类型模式&#xff08;Generi…...

远程容器开发成本飙升?3个被90%团队忽略的CPU/内存泄漏点,今天必须修复!

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;远程容器开发成本飙升的真相与警醒 当团队将本地 VS Code Dev Container 迁移至云端远程开发平台&#xff08;如 GitHub Codespaces、Gitpod 或自建 Kubernetes DevSpace&#xff09;后&#xff0c;单…...

GRM奖励模型:机器人强化学习的视觉评估与优化

1. GRM奖励模型的核心设计理念在机器人强化学习领域&#xff0c;奖励函数的设计一直是决定算法成败的关键因素。传统手工设计的奖励函数往往需要耗费大量工程时间&#xff0c;且难以覆盖复杂任务的所有场景。GRM&#xff08;General Reward Model&#xff09;通过视觉输入自动评…...

vLLM PagedAttention 核心架构优化实战:从内存瓶颈到性能突破

吞吐量最高提升 400% | 深度解析 vLLM 核心架构 生产踩坑 可运行代码 调优全链路 导读 本文从大模型推理显存瓶颈切入,系统拆解 vLLM 核心 PagedAttention 架构原理,覆盖: ✅ 图解核心算法(PagedAttention / Prefix Caching / Copy-on-Write) ✅ 3 个真实业务实战场景…...

CNKI-download:5分钟掌握知网文献批量下载的终极解决方案

CNKI-download&#xff1a;5分钟掌握知网文献批量下载的终极解决方案 【免费下载链接】CNKI-download :frog: 知网(CNKI)文献下载及文献速览爬虫 (Web Scraper for Extracting Data) 项目地址: https://gitcode.com/gh_mirrors/cn/CNKI-download 你是否曾经为了收集学术…...

大模型算法原理高频题解析

每周技术面试高频题汇总&#xff08;2026.04.22 - 2026.04.29&#xff09; 基于过去一周&#xff08;2026.04.22-2026.04.29&#xff09;在CSDN、LeetCode、掘金等各大技术社区的热议内容&#xff0c;本周技术面试焦点高度集中在大模型算法原理、高并发系统设计、数据库内核优…...

如何彻底掌控你的Dell G15散热:开源神器tcc-g15终极指南

如何彻底掌控你的Dell G15散热&#xff1a;开源神器tcc-g15终极指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 还在为Dell G15笔记本散热问题烦恼吗&…...

2026CRM排行榜,七大品牌测评,一体化CRM核心能力解析选型

在数字化转型的浪潮下&#xff0c;企业对CRM&#xff08;客户关系管理&#xff09;系统的需求已不再局限于简单的客户信息记录&#xff0c;而是转向寻求能够打通全业务流程、实现数据闭环的一体化SaaS平台。当前市场上&#xff0c;既有深耕国内全业务场景的“超兔一体云”&…...

使用LLaMA-Factory进行指令微调(Instruction Tuning)全流程-原理源码解析

使用LLaMA-Factory进行指令微调&#xff08;Instruction Tuning&#xff09;全流程-原理源码解析 1. 问题背景与分析目标 在大模型的应用场景中&#xff0c;如何让预训练模型更好地理解和执行用户的指令成为了一个关键问题。指令微调&#xff08;Instruction Tuning&#xff09…...

Java转Agent开发心路历程

从 Java 外包到 Agent 开发&#xff1a;一个CRUD程序员的认知突围之路先详细介绍一下博主的工作背景&#xff1a;22届双非本科出身大学浪费4年时间虚度光阴啥也没学会&#xff0c;毕业即失业&#xff0c;2022年秋招考上了老家本地银行柜员觉得对不起自己的专业&#xff0c;于是…...

蓝桥杯嵌入式备赛:用CubeMX+HAL库搞定LCD、按键、LED三大件(附完整工程源码)

蓝桥杯嵌入式竞赛实战&#xff1a;CubeMXHAL库高效开发LCD、按键与LED模块 在蓝桥杯嵌入式竞赛中&#xff0c;LCD显示、按键控制和LED指示是三大核心考核模块。本文将带你从零开始&#xff0c;使用STM32CubeMX配置工具和HAL库&#xff0c;构建一个稳定、高效的嵌入式开发框架。…...

扣子小龙虾隐藏玩法:不发工资的运营助理,帮你自动整理短视频运营数据~

扣子小龙虾隐藏玩法 不发工资的运营助理&#xff0c;帮你自动整理短视频运营数据 &#x1f680; 本文重点 用扣子小龙虾实现自动化短视频运营数据整理 &#x1f4a1;核心导读 当我用扣子小龙虾用了快一个月之后我才发现&#xff0c;这哪里是个普通的AI工具&#xff0c;明明是我…...

CTF逆向工程简单介绍以及解题通用思路入门

CTF逆向工程简单介绍以及解题通用思路入门 CTF逆向工程简单介绍以及解题通用思路入门 一、软件逆向工程的简介 &#xff08;1&#xff09;、软件的生成 软件的编写语言经历了从机器语言到汇编语言&#xff0c;再到如今高级语言的变化。最开始使用的都是机器语言进行的编写&a…...