什么网站可以做字体效果/网站群发推广软件

什么网站可以做字体效果,网站群发推广软件,商家产品展示网站源码,顺德网站建设要多少钱目录 链表的基本结构 头插法 打印链表 按位置查找 按值查找 主函数 查找操作 示例运行 输出示例 总结 在数据结构的学习中,链表是一种非常重要的线性结构。它的动态特性使得在插入和删除操作时比数组更为高效。今天,我们将继续探讨链表的操作&…

目录

链表的基本结构

头插法

打印链表

按位置查找

按值查找

主函数

查找操作

示例运行

输出示例

总结


在数据结构的学习中,链表是一种非常重要的线性结构。它的动态特性使得在插入和删除操作时比数组更为高效。今天,我们将继续探讨链表的操作,特别是如何在链表中进行查找操作,并打印链表的内容。通过这篇博客,你将更深入地理解链表的实现和操作。

链表的基本结构

在C语言中,链表的基本结构由节点(Node)构成,每个节点包含数据部分和指向下一个节点的指针。我们首先定义一个链表节点的结构体:

typedef int ElemType;typedef struct LNode {ElemType data;struct LNode *next;
} LNode, *LinkList;

这里,ElemType定义了节点中存储的数据类型,而LNode结构体则包含了数据和指向下一个节点的指针。

头插法

我们之前已经实现了头插法的插入操作。头插法是将新节点插入到链表的头部。以下是头插法的实现:

void list_head_insert(LinkList &L) {L = (LinkList) malloc(sizeof(LinkList)); // 申请头结点空间L->next = NULL;ElemType x;scanf("%d", &x);LinkList s; // 用来指向申请的新结点while (x != 9999) {s = (LinkList) malloc(sizeof(LinkList));s->data = x;s->next = L->next; // s 的next指向原本链表的第一个结点L->next = s; // 头结点的 next 指向新结点scanf("%d", &x);}
}

在这个函数中,我们首先创建一个头节点,然后通过循环读取用户输入的数据,直到输入9999为止。每次读取到一个新数据时,我们都会创建一个新节点,并将其插入到链表的头部。

打印链表

为了验证我们的链表操作是否成功,我们需要一个函数来打印链表的内容:

void print_list(LinkList L) {L = L->next; // 跳过头结点while (L != NULL) {printf("%d ", L->data);L = L->next;}printf("\n");
}

这个函数从头节点的下一个节点开始遍历链表,打印每个节点的数据。

按位置查找

我们实现了一个按位置查找的函数,返回指定位置的节点:

LinkList GetElem(LinkList &L, ElemType pos) {int i = 0;if (pos < 0) {return NULL; // 如果位置不合法,返回NULL}while (L && i < pos) {L = L->next; // 遍历链表i++;}return L; // 返回指定位置的节点
}

在这个函数中,我们通过遍历链表,返回指定位置的节点指针。如果位置不合法(如负数),则返回NULL

按值查找

除了按位置查找,我们还实现了一个按值查找的函数,返回第一个匹配的节点:

LinkList LocateElem(LinkList L, ElemType value) {while (L) {if (L->data == value) { // 找到对应的值 返回对应结点的地址return L;}L = L->next; // 继续遍历}return NULL; // 如果没有找到,返回NULL
}

这个函数遍历链表,查找第一个与给定值匹配的节点。如果找到,则返回该节点的指针;如果没有找到,则返回NULL

主函数

最后,我们在main函数中调用这些操作,构建链表并进行查找操作:

int main() {LinkList L; // L 是链表头指针list_head_insert(L); // 传递头指针的地址print_list(L); // 打印链表LinkList search = GetElem(L, 2); // 查找位置为 2 的元素if (search != NULL) {printf("Element at position 2: %d\n", search->data);} else {printf("No element found at position 2.\n");}search = LocateElem(L, 4); // 查找值为 4 的元素if (search != NULL) {printf("Element with value 4: %d\n", search->data);} else {printf("No element found with value 4.\n");}return 0;
}

main函数中,我们首先定义一个链表L,然后调用list_head_insert函数来填充链表。接着,我们使用print_list函数打印链表的内容,以验证插入操作的正确性。

查找操作

  1. 按位置查找:我们调用GetElem函数查找位置为2的元素。根据链表的结构,返回的节点将是链表中第二个元素的指针。如果该位置存在,我们将打印该元素的值;如果不存在,则输出相应的提示信息。

  2. 按值查找:我们调用LocateElem函数查找值为4的元素。该函数会遍历链表,查找第一个匹配的节点。如果找到,我们将打印该节点的值;如果没有找到,则输出相应的提示信息。

示例运行

假设用户输入以下数据来创建链表:

10
20
30
40
9999

在这种情况下,链表的初始状态为:40 -> 30 -> 20 -> 10。接着,我们进行查找操作:

  • 查找位置为2的元素,返回的结果将是30
  • 查找值为4的元素,由于链表中没有值为4的节点,输出将是“没有找到值为4的元素”。

输出示例

假设用户输入了上述数据,程序的输出将类似于:

40 30 20 10 
Element at position 2: 30
No element found with value 4.

总结

通过这篇博客,我们深入探讨了链表的基本操作,包括头插法、打印链表、按位置查找和按值查找。链表的灵活性使得它在许多应用中都非常有用,尤其是在需要频繁插入和删除操作的场景中。

希望这篇文章能帮助你更好地理解链表的实现和操作。如果你有任何问题或想法,欢迎在评论区留言讨论!链表的世界充满了可能性,继续探索吧!

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

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

相关文章

第八届蓝桥杯单片机省赛

什么&#xff1f;你把最近几届省赛真题做完已经无题可做了&#xff0c;那不妨来看看老古董第八届省赛的题目吧&#xff01; 附件&#xff1a;第八届蓝桥杯单片机省赛 一、数码管 1.页面流转 以上的页面流转功能可以用下图总结&#xff1a; #mermaid-svg-38fdQpdydbMy5CyP {fo…

win10电脑鼠标速度突然变的很慢?

电脑鼠标突然变很慢&#xff0c;杀毒检测后没问题&#xff0c;鼠标设置也没变&#xff0c;最后发现可能是误触鼠标的“DPI”调节键。 DPI调节键在鼠标滚轮下方&#xff0c;再次点击即可恢复正常鼠标速度。 如果有和-的按键&#xff0c;速度变快&#xff0c;-速度变慢。 图源&…

【解决哈希冲突】

哈希冲突 如果两个不同的 key 通过哈希函数得到了相同的索引&#xff0c;这种情况就叫做「哈希冲突」。 哈希冲突不可能避免&#xff0c;只能在算法层面妥善处理出现哈希冲突的情况。 哈希冲突是一定会出现的&#xff0c;因为这个 hash 函数相当于是把一个无穷大的空间映射到…

文件操作详解(万字长文)

C语言文件操作 一、为什么使用文件&#xff1f;二、文件分类三、文件的打开和关闭四、文件的顺序读写4.1fputc4.2fgetc4.3fputs4.4fgets4.5 fprintf4.6 fscanf4.7 fwrite4.8 fread 五、文件的随机读写5.1 fseek5.2 ftell和rewind六、文件读取结束的判定七、文件缓冲区 一、为什…

基于 JDBC 的后端与 MySQL 数据库交互 javaweb

一、了解JDBC 二、添加MySQL的JDBC驱动包 三、使用JDBC连接数据库应用&#x1f517; 3.1创建一个包 3.2 查找实例 3.3 修改添加删除实例 四、封装 &#x1f4e6; DBConnection.java MysqlUtil.java 测试使用一下 测试1 测试2 在后端开发中&#xff0c;与数据库进行交…

贪心算法--

1.柠檬水找零 link:860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; code class Solution { public:bool lemonadeChange(vector<int>& bills) {// 贪心算法&#xff0c; 优先花出大面额bill&#xff0c; 尽可能保护小面额billint five 0, ten 0;// 不…

基于YOLO11深度学习的电瓶车进电梯检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

github生成badges的方法

在Github页面上生成类似下面这样的badge的方法 你可以通过以下步骤在GitHub个人主页的README中创建类似的技术栈徽章&#xff1a; 一、使用 Shields.io 生成徽章 Shields.io 是一个开源徽章生成工具&#xff0c;支持自定义文本、颜色、图标等参数。 1. 基础模板 https://…

vue3 二次封装uni-ui中的组件,并且组件中有 v-model 的解决方法

在使用uniappvue3开发中&#xff0c; 使用了uni-ui的组件&#xff0c;但是我们也需要自定义组件&#xff0c;比如我要自定一个picker 的组件&#xff0c; 是在 uni-data-picker 组件的基础上进行封装的 父组件中的代码 <classesselect :selectclass"selectclass"…

爬虫案例七Python协程爬取视频

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Python协程爬取视频 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 爬虫案例七协程爬取视频 提示&#xff1a;以下是本篇文章正文…

Python 爬虫实战案例 - 获取拉勾网招聘职位信息

引言 拉勾网&#xff0c;作为互联网招聘领域的佼佼者&#xff0c;汇聚了海量且多样的职位招聘信息。这些信息涵盖了从新兴科技领域到传统行业转型所需的各类岗位&#xff0c;无论是初出茅庐的应届生&#xff0c;还是经验丰富的职场老手&#xff0c;都能在其中探寻到机遇。 对…

LM Studio 替换源的方式解决huggingface.co无法访问的问题

安装软件完成之后&#xff0c;不要打开&#xff0c;打开了就直接关闭 在安装目录下&#xff0c;比如我安装在E:\Program Files\LM Studio 下面三个文件中的huggingface.co全部替换为hf-mirror.com然后再打开即可。 E:\Program Files\LM Studio\resources\app\.webpack\rende…

【模拟CMOS集成电路设计】带隙基准(Bandgap)设计与仿真(基于运放的电流模BGR)

【模拟CMOS集成电路设计】带隙基准&#xff08;Bandgap&#xff09;设计与仿真 前言工程文件&部分参数计算过程&#xff0c;私聊~ 一、 设计指标指标分析&#xff1a; 二、 电路分析三、 仿真3.1仿真电路图3.2仿真结果(1)运放增益(2)基准温度系数仿真(3)瞬态启动仿真(4)静态…

微服务拆分-远程调用

我们在查询购物车列表的时候&#xff0c;它有一个需求&#xff0c;就是不仅仅要查出购物车当中的这些商品信息&#xff0c;同时还要去查到购物车当中这些商品的最新的价格和状态信息&#xff0c;跟购物车当中的快照进行一个对比&#xff0c;从而去提醒用户。 现在我们已经做了服…

P2P中NAT穿越方案(UDP/TCP)(转)

转自&#xff1a;P2P中NAT穿越方案&#xff08;UDP/TCP&#xff09;_udp反向链接-CSDN博客 同&#xff1a;P2P中NAT穿越方案&#xff08;UDP/TCP&#xff09; - 知乎 (zhihu.com) 本文介绍了传统基于udp的打洞方式&#xff0c;更进一步阐述了tcp打洞的原理&#xff0c;是对于…

算法 之 树形dp 树的中心、重心

文章目录 重心实践题目小红的陡峭值 在树的算法中&#xff0c;求解树的中心和重心是一类十分重要的算法 求解树的重心 树的重心的定义&#xff1a;重心是树中的一个节点&#xff0c;如果将这个点删除后&#xff0c;剩余各个连通块中点数的最大值最小&#xff0c;那么这个节点…

游戏引擎学习第146天

音高变化使得对齐读取变得不可能&#xff0c;我们可以支持循环声音了。 我们今天的目标是完成之前一段时间所做的音频代码。这个项目并不依赖任何引擎或库&#xff0c;而是一个教育项目&#xff0c;目的是展示从头到尾运行一个游戏所需要的全部代码。无论你对什么方面感兴趣&a…

深入理解MySQL主从原理

导读 高鹏&#xff08;网名八怪&#xff09;&#xff0c;《深入理解MySQL主从原理》系列文的作者。 本系列通过GTID、Event、主库、从库、案例分析&#xff0c;五大块来详细讲解主从原理。 这篇文章重在学习笔记整理&#xff01; 在学习《深入理解MySQL主从原理》一书时&…

Phi-4-multimodal:图、文、音频统一的多模态大模型架构、训练方法、数据细节

Phi-4-Multimodal 是一种参数高效的多模态模型&#xff0c;通过 LoRA 适配器和模式特定路由器实现文本、视觉和语音/音频的无缝集成。训练过程包括多阶段优化&#xff0c;确保在不同模式和任务上的性能&#xff0c;数据来源多样&#xff0c;覆盖高质量网络和合成数据。它的设计…

Unity--Cubism Live2D模型使用

了解LIVE2D在unity的使用--前提记录 了解各个组件的作用 Live2D Manuals & Tutorials 这些文件都是重要的控制动画参数的 Cubism Editor是编辑Live2D的工具&#xff0c;而导出的数据的类型&#xff0c;需要满足以上的条件 SDK中包含的Cubism的Importer会自动生成一个Pref…