嵌入式软件C语言面试常见问题及答案解析(四)
原本打算将链表相关的面试题整合到一个文档中,奈何写着写着就发现题目比较多,题型也比较丰富,所以导致上一篇已经足够长了,再长也就有点不礼貌了。
所以在这儿继续来总结分享那个面试中遇到的题目,文中的问题和提供的答案或者代码均代表个人的理解,如有不合理或者错误的地方,欢迎大家批评指正。
本文中题目列表
- 1. 把一个链表中的接点顺序逆序
- 2. 单向链表删除其某一个节点的代码
- 3. 用于删除链表中的所有节点
- 4. 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 5. 查找单链表的中间节点,要求只能遍历一次链表
- 6. 如何判断链表是否带环
- 7. 逆序输出链表中所有节点(从尾到头)
- 8. 在无头单链表的一个节点前插入一个节点
- 9. 将一个无序单链表节点从小到达进行排序。
- 10. 合并两个有序链表,并且合并后的新链表依然有序。
- 11. 判断两个均不带环的单链表是否相交。
- 12. 判断两个不带环的单链表是否相交,如果相交则求交点。
1. 把一个链表中的接点顺序逆序
题目:写出程序把一个链表中的接点顺序逆序,其中链表的结构定义如下。
typedef struct linknode
{int data;struct linknode *next;
} node;
在面试中数据结构的考题中链表的相关操作算是一个常规考题了。所以链表相关的操作最好还是熟练的好。
/* 链表逆置,输入链表头部,返回逆置之后的头部 */
node *reverse(node *head)
{/* 定义辅助指针 */node *p1 = NULL, *p2 = NULL, *p3 = NULL;/* 辅助指针定位 */p1 = head;p2 = p1->next; /* NOTE 其实就是 head->next->next *//* 循环结束的条件 */while (p2 != NULL){/* 辅助指针定位 */p3 = p2->next;/* 将当前节点的下一节点 指向 前一个节点 */p2->next = p1;/* 指针后移 */p1 = p2;p2 = p3;}/* 头节点已经变为尾节点,指向NULL */head->next = NULL;/* 重新设置输入参数为头节点 */head = p1;/* 返回新的头节点 */return head;
}
2. 单向链表删除其某一个节点的代码
题目:已知一个单向链表的头,请写出删除其某一个节点的算法,要求先找到此结点,然后删除。
题目中没有给出链表节点结构,同时也没有给出明确删除的条件(或函数原型),那么在此种情况下,可以定义两种函数原型;
- 根据节点的数据匹配删除,函数定义为
node *linklist_delete(node *head, int key)
- 根据节点的位置匹配删除,函数定义为
node *linklist_delete(node *head, int pos)
需要注意的是,题中相关的限定比较模糊,在设计过程中我们还需要注意几个方面:
- 没有表明单链表是否含有头节点(标识链表头,但是无有效数据)
- 删除位置可能是第一个节点(头节点),也可能是最后一个节点
- 要删除的节点的生命周期管理(函数内部直接释放,或者定义函数返回值的时候将删除的节点返回出来,方便调用着对删除的节点操作(信息保存、内存释放 等等));
下面给出参考代码(注意:本例中的头节点定义为没有有效数据的节点)。
typedef struct linknode
{int data;struct linknode *next;
} node;// 方案一
node *linklist_delete(node *head, int key)
{/* 临时辅助指针 */node *t_temp = NULL;/* 参数判断 */if (NULL != head &&NULL != head->next) /* NOTE 是否为空链表 */{/* 查找目标节点的位置 */while (head != NULL &&head->data != key){/* 保存当前节点 */t_temp = head;/* 链表节点后移 */head = head->next;}/* 是否到达尾部 */if (head != NULL){/* 删除当前节点 */t_temp->next = head->next;}}/* 返回要删除的节点 */return head;
}// 通用删除
node *linklist_delete(node *head, int pos)
{/* 临时参数定义 */node *t_temp = NULL;int i = 0;/* 参数判断 */if (NULL != head &&NULL != head->next) /* NOTE 是否为空链表 */{/* 起始位置初始化 */i = 1;/* 遍历查找目标节点 */while (i < pos && head->next != NULL){/* 循环让指针向后移动 */head = head->next;/* 位置记录 */i++;}/* 节点是否有效 */if (head->next != NULL){/* 临记录要删除的节点*/t_temp = head->next;head->next = t_temp->next; // head->next = head->next->next;}}// free(temp); // 释放temp所代表的最后一个节点空间// temp = NULL; // 防止野指针/* 返回结果 */return t_temp;
}
3. 用于删除链表中的所有节点
题目:编写代码,用于删除链表中的所有节点。
来一个简单的题目缓缓吧
void delete_allnode(node *head)
{node *p = NULL;while (head != NULL){/* 保存下一个节点信息 */p = head->next;/* 释放当前节点 */free(head);/* 节点赋值,继续下一个节点 */head
相关文章:
嵌入式软件C语言面试常见问题及答案解析(四)
嵌入式软件C语言面试常见问题及答案解析(四) 原本打算将链表相关的面试题整合到一个文档中,奈何写着写着就发现题目比较多,题型也比较丰富,所以导致上一篇已经足够长了,再长也就有点不礼貌了。 所以在这儿继续来总结分享那个面试中遇到的题目,文中的问题和提供的答案或者…...
Python中是否有类似R语言中rds的功能,可将对象保存为文件?
在数据分析和科学计算领域,R语言和Python都是极为流行的编程语言。它们各自拥有独特的优势和丰富的库资源,使得数据科学家们能够高效地处理和分析数据。在R语言中,RDS(R Data Serialization)格式是一种非常方便的方式&…...
LabVIEW无人机飞行状态监测系统
近年来,无人机在农业植保、电力巡检、应急救灾等多个领域得到了广泛应用。然而,传统的目视操控方式仍然存在以下三大问题: 飞行姿态的感知主要依赖操作者的经验; 飞行中突发的姿态异常难以及时发现; 飞行数据缺乏系统…...
车联网安全入门一:了解CAN总线及环境模拟
准备打工了,工作内容和车联网安全相关,本来想着和app分析有较大关系,但是还涉及到很多关于汽车渗透测试相关的知识,由于之前并没有接触过,就借此机会和大家来学习一下。 ## CAN基础知识 ### CAN(Controller…...
hive spark读取hive hbase外表报错分析和解决
问题现象 使用Spark shell 操作hive关联Hbase的外表导致报错;hive使用tez引擎操作关联Hbase的外表时报错。 问题1:使用tez或spark引擎,在hive查询时只要关联hbase的hive表就会有问题其他表正常。 “org.apache.hadoop.hbase.client.RetriesExhaustedException:Can’t get …...
【MQ】RabbitMQ 高可用延时功能的探究
延迟消息如果使用延时交换机来实现,如果数据量过大,就会很占 CPU 资源,轻则时间误差大,重则 RabbitMQ 宕机 一、针对一个 RabbitMQ 节点 (1)利用队列 ttl,将延迟消息根据 delay 的时间进行分级…...
网络安全讲座之一:网络安全的重要性
第一讲内容主要对于安全的发展以及其重要性作了简明的阐述,并介绍了一些国内外知名的网络安全相关网站,并对于如何建立有效的安全策略给出了很好的建议,并让大家了解几种安全标准。 媒体经常报道一些有关网络安全威胁的令人震惊的事件&am…...
flutter ListView Item复用源码解析
Flutter 的 ListView 的 Item 复用机制是其高性能列表渲染的核心,底层实现依赖于 Flutter 的渲染管线、Element 树和 Widget 树的协调机制。以下是 ListView 复用机制的源码级解析,结合关键类和核心逻辑进行分析。 1. ListView 的底层结构 ListView 的复…...
基于java手机销售网站设计和实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
HTML 左右联动高亮示例
HTML 左右联动高亮示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>左右联动高亮示例</titl…...
如何本地部署DeepSeek
第一步:安装ollama https://ollama.com/download 打开官网,选择对应版本 第二步:选择合适的模型 https://ollama.com/ 模型名称中的 1.5B、7B、8B 等数字代表模型的参数量(Parameters),其中 B 是英文 B…...
虚拟机+Docker配置主机代理和常见配置
完整配置流程如下: 配置虚拟机使用宿主机代理: # 设置环境变量(宿主机IP为192.168.100.1,代理端口7890) export http_proxyhttp://192.168.100.1:7890 export https_proxyhttp://192.168.100.1:7890# 测试代理是否生…...
996引擎-问题处理:盟重传送石问题
996引擎-问题处理:盟重传送石问题 问题解决方案补充:回城卷参考资料问题 今天添加了个新地图,由于这个版本只有盟重传送石没设计回城卷。 所以怎么搞都回不到新地图的回城点。(当时也是懵逼了都忘记它叫 盟重 传送石`) 分析 先看一下道具表的配置。 [@StdModeFuncX] 表示…...
从零到一学习c++(基础篇--筑基期七-vector与迭代器)
从零到一学习C(基础篇) 作者:羡鱼肘子 温馨提示1:本篇是记录我的学习经历,会有不少片面的认知,万分期待您的指正。 温馨提示2:本篇会尽量用更加通俗的语言介绍c的基础,用通俗的语言去…...
PKI及SSL协议分析
PKI的基本组成,完整的PKI系统必须具有权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统、应用接口(API)等基本构成部分,构建PKI也将围绕着这五大系统来着手构建。 任务一:搭建CA服务器 本任务初步了…...
请解释 JavaScript 中的函数式编程,优缺点是什么?
一、对JavaScript函数式编程的理解 函数式编程(Functional Programming,FP)是一种编程范式,它将计算视为数学函数的求值,并避免改变状态和可变数据。 在JavaScript中,函数式编程具有以下几个关键特性&…...
WPS接入DeepSeek模型
1.wps 下载安装 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站 (最好是安装最新的wps) 2.offieceAi工具下载安装 软件下载 | OfficeAI助手 下载后安装下载下来的两个工具。安装路径可以自行修改 3.打开WPS,点击文件-》 选项-》信任中心 勾…...
头条百度批量采集软件说明文档
旧版说明文档《头条号文章批量采集软件4.0版本说明文档!头条/微头条文章批量采集》 头条的采集软件已经更新了好多个版本了,一直没有做详细的介绍文档,最近更新了一些功能进去,一块来写一下说明文档。 1、主界面 2、头条作者采集…...
网络安全架构师怎么考 网络安全 架构
安全通信网络 随着现代技术的不断发展,等级保护对象通常通过网络实现资源共享和数据交互,当大量的设备连成网络后,网络安全成了最为关注的问题。按照“一个中心,三重防御”的纵深防御思想,边界外部通过广域网或城域网…...
Vue 3 30天精进之旅:Day 21 - 项目实践:打造功能完备的Todo应用
前言 经过前20天的学习,我们已经掌握了Vue 3的核心概念、组合式API、路由、状态管理等关键技术。今天将通过一个完整的项目实践——Todo应用,将所学知识融会贯通。我们将为Todo应用添加编辑、删除、过滤等进阶功能,并优化代码结构。 一、项目…...
2025年02月11日Github流行趋势
项目名称:unsloth 项目地址url:https://github.com/unslothai/unsloth项目语言:Python历史star数:27175今日star数:1024项目维护者:danielhanchen, shimmyshimmer, Erland366, Datta0, xyangk项目简介&…...
嵌入式硬件篇---原码、补码、反码
文章目录 前言简介八进制原码、反码、补码1. 原码规则示例问题 2. 反码规则示例问题 3. 补码规则示例优点 4. 补码的运算5. 总结 十六进制原码、反码、补码1. 十六进制的基本概念2. 十六进制的原码规则示例 3. 十六进制的反码规则示例 4. 十六进制的补码规则示例 5. 十六进制补…...
PCM与G711A互转
PCM与G711A互转 工具类(Java)调用方法(Kotlin) 工具类(Java) public class G711Code {private final static int SIGN_BIT 0x80;private final static int QUANT_MASK 0xf;private final static int SEG…...
MapReduce简单应用(三)——高级WordCount
目录 1. 高级WordCount1.1 IntWritable降序排列1.2 输入输出格式1.3 处理流程 2. 代码和结果2.1 pom.xml中依赖配置2.2 工具类util2.3 高级WordCount2.4 结果 参考 本文引用的Apache Hadoop源代码基于Apache许可证 2.0,详情请参阅 Apache许可证2.0。 1. 高级WordCo…...
C# 数据验证Regex
Regular Expression,简称 Regex,是一种用于匹配和处理文本的强大工具。它通过定义特定的模式,可以用来搜索、替换或提取字符串中的特定内容。 先引入命名空间 using System.Text.RegularExpressions; Intege(整数) 必须是正整数 //必须是正整数publi…...
Jenkins+gitee 搭建自动化部署
Jenkinsgitee 搭建自动化部署 环境说明: 软件版本备注CentOS8.5.2111JDK1.8.0_211Maven3.8.8git2.27.0Jenkins2.319最好选稳定版本,不然安装插件有点麻烦 一、安装Jenkins程序 1、到官网下载相应的版本war或者直接使用yum安装 Jenkins官网下载 直接…...
C/C++混合读入cin与scanf问题
因为C/C在某些时候是如此的融洽,以至于很多时候可能会混用,就比如 scanf与cin或getline(cin, ..)这是一个严肃的问题。因为随意混用,可能导致,在某些特殊时刻,读取混乱。所以本篇的意义就是为了缕清混用机制 一、scan…...
矩阵 NFC 碰一碰发视频源码搭建技术解析,支持OEM
一、引言 在移动互联与物联网飞速发展的当下,NFC(Near Field Communication,近场通信)技术凭借其便捷、快速的数据传输特性,在众多领域得到广泛应用。本文将深入探讨如何搭建矩阵 NFC 碰一碰发视频的源码,…...
Log4j定制JSON格式日志输出
1.前言 log4j是Java中一个强大的日志记录框架,通过简单的配置便可以在程序中进行日志打印与记录。关于log4j博主最近碰到一个需求,需要将程序运行过程中的日志按给定的json模板输出,本文记录一下log4j如何配置json格式的日志打印。 2.日志配…...
Spring依赖注入方式
写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭&#x…...
【C++八股】什么是函数指针,如何定义和使⽤场景
函数指针是指向函数的指针变量,它存储的是一个函数的地址,允许通过指针间接调用函数。使用函数指针可以动态地选择和调用函数,或者将函数作为参数传递给其他函数。 1. 函数指针的定义 函数指针的定义与普通指针稍有不同。它需要声明指向特定…...
DeepSeek 入驻 Cursor —— 表现能否超越 Claude?
DeepSeek 刚刚在 Cursor 平台上线了它的两款模型:DeepSeek V3 和 R1。目前,许多开发者(包括我们在内)主要依赖 Claude 3.5 Sonnet(最新版本 claude-3-5-sonnet-20241022)作为主要语言模型,因此我…...
skynet-src/atomic.h:25:23: 致命错误:stdatomic.h:没有那个文件或目录
skynet-src/atomic.h:25:23: 致命错误:stdatomic.h:没有那个文件或目录 故事背景,又接了一个新项目,要搞开发环境啊。skyent的框架。ubuntu已经跑起来了,但是内网是centos的跑不起来。只能怀疑是环境问题了࿰…...
docker compose部署nexus
整个工具的代码都在Gitee或者Github地址内 gitee:solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb github:GitHub - ZeroNing/solomon-parent: 这个项目主要是…...
IBM服务器刀箱Blade安装Hyper-V Server 2019 操作系统
案例:刀箱某一blade,例如 blade 5 安装 Hyper-V Server 2019 操作系统(安装进硬盘) 刀箱USB插入安装系统U盘,登录192.168... IBM BlandeCenter Restart Blande 5,如果Restart 没反应,那就 Power Off Blade 然后再 Power On 重启后进入BIOS界面设置usb存储为开机启动项 …...
Python的顺序结构和循环结构
文章目录 一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(c)多分支 if-elif-elif-...-else (3)注意事…...
[python SQLAlchemy数据库操作入门]-30.掌握 SQLAlchemy:优雅应对数据库异常的艺术
哈喽,大家好,我是木头左! 捕获和处理 SQLAlchemy 异常 在实际应用中,需要根据不同的异常类型采取不同的处理策略。下面是一个示例,展示了如何捕获和处理 SQLAlchemy 的异常。 from sqlalchemy import create_engine, Column, Integer, String, exc from sqlalchemy.ext.…...
编译和链接【三】
文章目录 编译和链接【三】前言系列文章入口编译过程词法分析语法分析语义分析生成中间代码汇编链接 编译和链接【三】 前言 在我大一的时候, 我使用VC6.0对C语言程序进行编译链接和运行 , 然后我接触了VS, Qt creator等众多IDE,…...
11苍穹外卖之Apache ECharts(数据可视化图表、后端传数据)
课程内容 Apache ECharts 营业额统计 用户统计 订单统计 销量排名Top10 功能实现:数据统计 数据统计效果图: 1. Apache ECharts 1.1 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动&#…...
Grafana-使用Button修改MySQL数据库
背景 众所周知,Grafana是一个用来展示数据的平台,但是有时候还是会有需求说能不能有一个按钮,点击的时候再对数据库进行修改,从而达到更新数据的效果 经过多方查证,终于实现了一个简单的,点击button执行sq…...
C++11语法及库详解
目录 一、c11语法 1. 自动类型推导 (auto) 2. 基于范围的 for 循环 3. Lambda 表达式 4. 智能指针 5. 右值引用和移动语义 6. nullptr 关键字 7. constexpr 关键字 8. 初始化列表 9. std::thread 多线程支持 10. std::function 和 std::bind 11. std::unordered_map…...
数据库,数据表的增删改查操作
一.数据库的基本操作 (1)创建数据库 创建数据库就是在数据库系统中划分一块存储数据的空间,方便数据的分配、放置和管理。在MySQL中使用CREATE DATABASE命令创建数据库,语法格式如下: CREATE DATABASE数据库名称; 注:…...
Python——批量图片转PDF(GUI版本)
目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…...
RocketMQ面试题:原理部分
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
中间件-安装Minio-集成使用(ubantu-docker)
目录 1、安装docer 2、运行以下命令拉取MinIO的Docker镜像 3、检查当前所有Docker下载的镜像 4、创建目录 5、创建Minio容器并运行 6、SDK操作 FileUploader.java 1、安装docer 参考这篇:Linux安装Docker 2、运行以下命令拉取MinIO的Docker镜像 docker pull…...
vue3: const一个function怎么写呢?
问: 用ref或者reactive定一个一个const refCharts ref(function xxx (config){ xxxxx,xxxxx xxxx,xxxx })请问怎么写? 回答: 在 Vue 3 中,ref 和 reactive 是两种常用的响应式数据定义方式。ref 用于定义单个响应式对象或原始值…...
【JVM详解三】垃圾回收机制
一、对象是否存活 强引用:Object obj new Object(); 只要强引用还在,垃圾收集器永远不会回收掉被引用的对象。在不用对象的时将引用赋值为 null,能够帮助垃圾回收器回收对象。比如 ArrayList 的 clear() 方法实现。软引用(SoftRe…...
dbeaver 安装之后出现mysql连接异常问题
1.手动下载mysql驱动程序 参考文档DBeaver连接mysql驱动下载失败怎么办?-CSDN博客 2.添加对应的下载程序到dbeaver 【DBeaver】缺少mysql驱动_dbeaver连接mysql缺少驱动-CSDN博客 配置mysql 地址端口账户等即可使用...
Android Studio历史版本下载
Android Studio历史版本下载 历史版本所在网站: https://developer.android.google.cn/studio/archive 等待加载 1、(需要点击switch to english)然后出现Terms and conditions 2、滑到最下面,点击I agree to the terms,之后才会…...
【每日一题 | 2025】2.3 ~ 2.9
个人主页:GUIQU. 归属专栏:每日一题 文章目录 1. 【2.3】P8784 [蓝桥杯 2022 省 B] 积木画2. 【2.4】P8656 [蓝桥杯 2017 国 B] 对局匹配3. 【2.5】[ABC365D] AtCoder Janken 34. 【2.6】P8703 [蓝桥杯 2019 国 B] 最优包含5. 【2.7】P8624 [蓝桥杯 2015…...