作业Day4: 链表函数封装 ; 思维导图

目录

作业:实现链表剩下的操作:

任意位置删除

按位置修改

按值查找返回地址

反转

销毁

运行结果

思维导图


作业:实现链表剩下的操作:

        1>任意位置删除

        2>按位置修改

        3>按值查找返回地址

        4>反转

        5>销毁

任意位置删除

思路:

遍历到将要删除的位置的        前一个;

链接"本空间"与"下下个空间";

释放下一个空间,并置空指针

代码:

/*
函数功能:删除指定位置数据
输入参数:链表(头节点);删除位置
返回值:无
*/
void delData(linkListPtr H,int i)
{//判断地址是否合法//判断是否为空//判断删除位置是否合理:针对用户1~H->lenif(NULL==H||ifEmpty(H)||i<=0||i>H->len){printf("地址或插入位置不合法!\n");return;}//遍历到将要删除的位置的 前一个linkListPtr temp=H;i--;while(i--){temp=temp->next;}//创建临时指针:指向将被"删除"的空间地址linkListPtr temp2=temp;temp2=temp2->next;//链接:将本节点指向下一个节点的下一个节点temp->next=temp->next->next;//释放内存 并指针置NULLfree(temp2);temp2=NULL;//链表长度-1H->len--;
}

按位置修改

思路:略

代码

/*
函数功能:数据修改
参数列表:链表地址;修改位置,修改数据
返回值无
*/
void cortData(linkListPtr H,int i,DataType e)
{//判断地址是否合法//判断修改位置是否合理:针对用户1~H->lenif(NULL==H||i<=0||i>H->len){printf("地址或插入位置不合法!\n");return;}//遍历到将要修改的位置linkListPtr temp=H;while(i--){temp=temp->next;}temp->data=e;
}

按值查找返回地址

思路:略

代码

//按值查找,返回地址
linkListPtr findData(linkListPtr H,DataType e)
{//判断是否合法//判断是否为空if(NULL==H||ifEmpty(H)){printf("地址或不合法!\n");return NULL;}linkListPtr temp=H;for(int i=0;i<H->len;i++){temp=temp->next;if(temp->data==e){return temp;}}return NULL;
}

反转

思路:

每次循环使倒数第一个、倒数第二个、倒数第三个......回头指向;

使原来的头节点指向原来的最后一位数据

使原来的首个节点置NULL

代码

void trap(linkListPtr H)
{//判断地址是否合法//判断是否为空if(NULL==H||ifEmpty(H)){printf("地址不合法或者链表数据为空!\n");return;}//创建(预备)头地址:指向最后一个元素;linkListPtr tempH=H;for(int i=0;i<H->len;i++)//定位到最后一个数据{//使(预备)头指针指向最后一个节点tempH=tempH->next;}//思路:多次循环:每次分别使最后一个、倒数第二个......回指linkListPtr temp=H;for(int i=0;i<H->len-1;i++)//决定循环总轮数{temp=H;for(int j=0;j<H->len-1-i;j++)//每次循环向后遍历的次数{temp=temp->next;}//回指:使下一个节点指向本节点temp->next->next=temp;}//当前temp所代表节点变为最后一个节点:需置空temp->next=NULL;//更新头地址H->next=tempH;}

思路:

遍历链表:在遍历过程中,依次使遍历到的元素改变朝向:

销毁

思路

检查传入地址是否合法

释放传入地址所指向的空间

释放后,指针置空

代码

//销毁链表
void freeList(linkListPtr *HH)
{//判断地址是否合法if(NULL==*HH){printf("地址不合法!\n");return;}//释放指针指向的堆区空间free(*HH);//修改传入地址的指向:将传入的指针置空*HH=NULL;//本指针也置空HH=NULL;printf("链表已销毁!\n");
}

修正:

        链表地址并非连续;free不能一次性释放所有节点

//销毁链表
void freeList(linkListPtr *HH)
{//判断地址是否合法if(NULL==*HH){printf("地址不合法!\n");return;}//思路:循环遍历:每次销毁最后一个linkListPtr temp=*HH;while((*HH)->next!=NULL)//循环条件:头指针指向的空间不为NULL{temp=*HH;while(temp->next->next!=NULL)//定位到最后一个节点   的前一个节点{temp=temp->next;}//释放指针指向的堆区空间(节点)free(temp->next);//本节点变为最后一个节点:指向置NULLtemp->next=NULL;}//释放头节点free(*HH);//修改传入的地址指向:置NULL*HH=NULL;//本指针也置NULLHH=NULL;printf("链表已销毁!\n");
}

运行结果

思维导图

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

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

相关文章

WebSocket入门与结合redis

WebSocket是什么 WebSocket 是一种用于在客户端和服务器之间建立双向通信的协议&#xff0c;它能实现实时、持久的连接。与传统的 HTTP 请求响应模式不同&#xff0c;WebSocket 在建立连接后允许客户端和服务器之间相互发送消息&#xff0c;直到连接关闭。由于 WebSocket 具有…

WSL Ubuntu

文章目录 1. 概述1.1 什么是适用于 Linux 的 Windows 子系统1.2 什么是 WSL 21.3 WSL 2 中的新增功能1.4 比较 WSL 2 和 WSL 1 2. 参考资料3. 修改存储位置4. 网络访问 1. 概述 1.1 什么是适用于 Linux 的 Windows 子系统 适用于 Linux 的 Windows 子系统可让开发人员按原样运…

unity接入coze智能体

官网链接 coze智能体创建、设置 点击创建–选着智能体&#xff0c;随便起一个名字&#xff0c;就可以了 添加令牌 把随便起一个名字&#xff0c;设置时间&#xff0c;把所有选项都勾选上&#xff0c;一定要勾选所有团队空间&#xff0c;否则无法点击确定。 点击确定后&a…

基于51单片机的交通灯设计—夜间、紧急、复位、可调时间、四个数码管显示

基于51单片机的交通灯设计 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;PCB&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1、采用四方向数码管设计&#xff0c;更加符合真实的交通信号灯设计&#xff1b; 2、左侧按键从上到下依次为…

省略内容在句子中间

一、使用二分查找法 每次查找时&#xff0c;将查找范围分成两半&#xff0c;并判断目标值位于哪一半&#xff0c;从而逐步缩小查找范围。 循环查找 计算中间位置 mid Math.floor((low high) / 2)。比较目标值 target 和中间位置的元素 arr[mid]&#xff1a; 如果 target ar…

Python:动态粒子爱心

预览 代码结构概述 这段代码使用了 pygame 库来创建一个动态的图形窗口&#xff0c;绘制一个心形图案&#xff0c;并在其中显示闪烁的文本。代码主要分为以下几个部分&#xff1a; 初始化和设置心形曲线的计算粒子类的定义生成粒子文本设置主循环 1. 初始化和设置 import p…

springboot449教学资源共享平台(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统教学资源共享平台信息管理难度大&#xff0c;容错率低&am…

DataOps驱动数据集成创新:Apache DolphinScheduler SeaTunnel on Amazon Web Services

引言 在数字化转型的浪潮中&#xff0c;数据已成为企业最宝贵的资产之一。DataOps作为一种文化、流程和实践的集合&#xff0c;旨在提高数据管道的质量和效率&#xff0c;从而加速数据从源头到消费的过程。白鲸开源科技&#xff0c;作为DataOps领域的领先开源原生公司&#xf…

【大模型】GraphRAG技术原理

核心概念 GraphRAG 的核心在于用大模型构建知识图谱知识图谱聚类社区化RAG RAG就是输入&#xff08;问题知识&#xff09;到大模型 1-大模型自动从海量数据中构建知识图谱&#xff08;提取合并实体关系&#xff09; 2-聚类算法从知识图谱中聚类社区并生成社区摘要 3-输入问题…

揭秘区块链隐私黑科技:零知识证明如何改变未来

文章目录 1. 引言&#xff1a;什么是零知识证明&#xff1f;2. 零知识证明的核心概念与三大属性2.1 完备性&#xff08;Completeness&#xff09;2.2 可靠性&#xff08;Soundness&#xff09;2.3 零知识性&#xff08;Zero-Knowledge&#xff09; 3. 零知识证明的工作原理4. 零…

王佩丰24节Excel学习笔记——第十二讲:match + index

【以 Excel2010 系列学习&#xff0c;用 Office LTSC 专业增强版 2021 实践】 【本章小技巧】 vlookup与match&#xff0c;index 相结合使用match,index 结合&#xff0c;快速取得引用的值扩展功能&#xff0c;使用match/index函数&#xff0c;结合照相机工具获取照片 一、回顾…

探秘C语言:从诞生到广泛应用的编程世界

引言 在编程的广袤天地里&#xff0c;C 语言宛如一颗璀璨的恒星&#xff0c;持久而耀眼地散发着光芒。自诞生以来&#xff0c;它就以独特的魅力和强大的功能&#xff0c;深深扎根于软件开发的各个层面。无论是构建复杂的操作系统&#xff0c;还是操控微小的嵌入式设备&#xff…

【Python】pandas库---数据分析

大学毕业那年&#xff0c;你成了社会底层群众里&#xff0c;受教育程度最高的一批人。 前言 这是我自己学习Python的第四篇博客总结。后期我会继续把Python学习笔记开源至博客上。 上一期笔记有关Python的NumPy数据分析&#xff0c;没看过的同学可以去看看&#xff1a;【Pyt…

常见异构程序设计语言

目录 一、OpenMP 二、MPI 三、CUDA/HIP 四、OpenACC 五、Athread 六、OpenCL 七、oneAPI 20世纪80年代&#xff0c;异构计算技术就已经诞生了。异构就是CPU、DSP、GPU、ASIC、协处理器、FPGA等各种计算单元、使用不同的类型指令集、不同的体系架构的计算单元&#xff0c…

番外篇 Git 的原理与使用

PS&#xff1a;本篇是个长篇&#xff0c;但是阅读完&#xff0c;可以基本了解 Git 在实际开发中的绝大部分常用操作。 前言&#xff1a;什么是Git 我们在日常工作 / 学习时&#xff0c;对于某些文档 / 代码&#xff0c;可能会存在多个版本需要维护&#xff0c;但是随着版本的…

音频开发中常见的知识体系

在 Linux 系统中&#xff0c;/dev/snd 目录包含与声音设备相关的文件。每个文件代表系统中的一部分音频硬件或音频控制接口。以下是你列出的文件及其含义&#xff1a; 一.基本术语 样本长度(sample)&#xff1a;样本是记录音频数据最基本的单位&#xff0c;计算机对每个通道采…

我的工作会被AI替代吗?

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

‌HBase是什么,‌HBase介绍

‌官方网站&#xff1a;Apache HBase – Apache HBase Home HBase是一个分布式的、面向列的NoSQL数据库&#xff0c;主要用于存储和处理海量数据。‌它起源于Google的​​​​​​​BigTable论文&#xff0c;是Apache Hadoop项目的子项目。HBase设计用于高可靠性、高性能和可伸…

【C 语言指针篇】指针的灵动舞步与内存的神秘疆域:于 C 编程世界中领略指针艺术的奇幻华章

文章目录 【C 语言篇】指针的灵动舞步与内存的神秘疆域&#xff1a;于 C 编程世界中领略指针艺术的奇幻华章前言一 、指针的介绍与使用1. 指针的介绍1.1指针表示1.2指针变量1.3空指针 2. 使用指针2.1交换两个变量的值2.2计算输出最小值和最大值 二、野指针的介绍与使用1. 野指针…

网络视频监控平台/安防监控/视频综合管理Liveweb视频汇聚平台解决方案

一、当前现状分析 当前视频资源面临以下问题&#xff1a; 1&#xff09;不同单位在视频平台建设中以所属领域为单位&#xff0c;设备品牌众多&#xff0c;存在的标准不一&#xff0c;各系统之间也没有统一标准&#xff1b; 2&#xff09;各单位视频平台建设分散、统筹性差&am…