数据结构 每日一练:将带头结点的单链表就地逆置(视频讲解两种方法)

目录

方法一

算法视频分析

方法二

 算法视频分析


Q:什么是“就地”捏?

A:就是指辅助空间复杂度为O(1),通俗一点来说就是不需要再开辟一块空间来实现算法。

特别说明: 

        笔者第一次录制视频,言语有些不顺,还望大家见谅!如有错误,请大家指出。

方法一

        头插法,将头结点摘下来,然后从第一结点开始,一次插入到头结点后面(头插法建立单链表),直到最后一个结点为止。

LinkList Reverse_1(LinkList L)
{LNode* p, * r;         //p为工作指针,r为p的后继,以防止出现断链p = L->next;           //从第一个元素结点开始L->next = NULL;        //先将头结点L的next域置为NULLwhile (p != NULL)      //依次将元素结点断开{r = p->next;       //存放p的后继p->next = L->next; //将p结点插入到头结点之后L->next = p;p = r;}return L;
}

算法视频分析

 

方法二

        假设pre,p和r指向3个结点。经过若干操作之后,*pre之前的结点的指针都已经调整完毕,它们的next都指向其原前驱节点。现在令*p结点的next域指向*pre结点,注意到一旦调整指针的指向,*p的后继结点就会断开,因此需要用r来指向原*p的后继结点。注意两点:一是再处理第一个结点时,应将其next域置为NULL ,而不是指向头结点(因为它将作为新表的尾结点);二是处理完最后一个结点后,需要将头结点的指针指向它。

LinkList Reverse_2(LinkList L)
{LNode* pre, * p = L->next, * r = p->next;p->next = NULL;         //处理第一个结点while (r != NULL)       //r为空的时候说明是最后一个结点{pre = p;            //依次遍历p = r;r = r->next;p->next = pre;      //指针反转}L->next = p;            //处理最后一个结点return L;
}

 算法视频分析

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

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

相关文章

MySQL——常见问题

NULL和空值的区别 1、空值不占空间,NULL值占空间。当字段不为NULL时,也可以插入空值。 2、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。 3、判断NULL 用IS NULL 或者 is no…

SQL Server对象类型(3)——4.3.视图(View)

4.3.1. 视图概念 与Oracle中的视图类似,SQL Server中的视图也是一种虚的、通过一个查询定义的逻辑对象,主要用于集中、简化、定制用户需求,控住其底层表安全,以及应用系统提供向后兼容等方面。 --注: 1)上述内容中的“虚的”,表示视图本身并不实际包含和存储数据,SQL…

Win10 ping 虚拟机kali 请求超时解决办法

出现这种问题应该是windows休眠导致的 这里我的解决方法是先禁用再启用连接 然后再ping 虚拟机ip和kali ip,发现就可以连上了

vue前后端端口不一致解决方案

在config index.js文件中 引入如下代码即可 const path require(path) const devEnv require(./dev.env) module.exports {dev: {// PathsassetsSubDirectory: static,assetsPublicPath: /,proxyTable: devEnv.OPEN_PROXY false ? {} : {/api: {target: http://localhos…

2023高教社杯数学建模国赛B题思路解析+代码+论文

下文包含:2023高教社杯数学建模国赛B题思路解析代码参考论文等及如何准备数学建模竞赛(7号比赛开始后逐步更新) C君将会第一时间发布选题建议、所有题目的思路解析、相关代码、参考文献、参考论文等多项资料,帮助大家取得好成绩。…

工作和生活中,如何用项目管理思维解决复杂的事情?

在工作和生活中,许多事情都可以采用项目思维方式来解决。当我们逐渐将工作和生活中的各种事务以项目的方式来处理和推进时,我们可能并没有意识到,实际上我们正在运用项目管理思维。 项目管理思维能帮助我们在面对繁杂事务时,理清…

PY32F003F18按键输入

一、PY32F003F18的GPIO介绍 1、PY32F003F18的18个I/O,均可作为外部中断; 2、每个GPIO都可以由软件配置为输出: 1)、推挽输出(push-pull) 2)、开漏极输出(open drain) 注意:驱动电流为8mA; 3、每个GPIO都可以由软件配置为输入: 1)、…

android 离线语言合成(文字转语音)

1、基于开源MaryTTS https://github.com/AndroidMaryTTS/AndroidMaryTTS 目前查到的资料,不支持中文,只针对西方语种。 2、基于TensorFlowTTS 官方个地址:为 Android 构建 TensorFlow Lite 库 (google.cn) 所依赖包下载地址:Maven Centr…

ERP辅助报价助力提高效率和准确性

一、ERP辅助报价的定义: ERP辅助报价是指通过企业资源计划系统提供的功能和工具,辅助企业进行报价流程的管理和执行。它涵盖了报价数据的收集、计算、分析和生成报价文件的全过程,以提高报价的准确性、效率和一致性。 二、ERP辅助报价的重要…

LeetCode:2. 两数之和

这个解题思路来自代码随想录&#xff1a;代码随想录 (programmercarl.com) class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {std::unordered_map <int,int> map;for(int i 0; i < nums.size(); i) {// 遍历当前元素&am…

若依前端vue设置子路径

若依前端vue设置子路径 说明&#xff1a;本文档中以前后端分离版为例&#xff0c;版本为:3.8.6 一设置变量 在.env.development和.env.production 中定义一个变量如VUE_APP_PROJECT_IDENTIFIER # 项目标识字符 VUE_APP_PROJECT_IDENTIFIER admin二引用路径变量 ${process…

mysql trace

optimizer_trace 它可以跟踪优化器做出的各种决策&#xff08;比如访问表的方法、各种开销计算、各种转换等&#xff09;&#xff0c;并将跟踪结果记录到 information_schema 数据库中的 optimizer_trace 表中。 mysql 默认是关闭 追踪的 开启、并设置格式为 josn,同时设置trac…

No5.10 咖啡店的营业额

# codingutf-8利润计算器已知的信息如下&#xff1a;咖啡店目前只卖拿铁&#xff0c;每杯售价 24 元&#xff0c;成本为 8 元&#xff1b; 咖啡店每天的水电、人工成本为 500。 接下来请你写一个利润计算器来计算一下咖啡店每天的利润&#xff0c;要求&#xff1a;定义一个名为…

Golang不同平台编译的思考

GOOS和GOARCH $GOOS可选值如下&#xff1a; darwin dragonfly freebsd linux netbsd openbsd plan9 solaris windows $GOARCH可选值如下 386 amd64 arm 在编译的时候我们可以根据实际需要对这两个参数进行组合。更详细的说明可以进官网看看 ## http://golang.org/cmd/go http…

数电课程设计

为了帮助大家更好学习FPGA硬件语言&#xff0c;创立此资源 包含文件有&#xff1a;实验报告、仿真文件&#xff0c;资料很全&#xff0c;有问题可以私信 课设一&#xff1a;加减计数器 一、实验内容 1、利用QuartusII和Modelsim实现100进制可逆计数器编码显示实验。 二、实…

【HttpRunnerManager】搭建接口自动化测试平台操作流程

一、需要准备的知识点 1. linux: 安装 python3、nginx 安装和配置、mysql 安装和配置 2. python: django 配置、uwsgi 配置 二、我搭建的环境 1. Centos7 &#xff08;配置 rabbitmq、mysql 、Supervisord&#xff09; 2. python 3.6.8 &#xff08;配置 django、uwsgi&am…

安全协议的匿名性

匿名性是指&#xff1a;一个对象不能在一组同类型对象的集合中被识别出来&#xff0c;换句话说&#xff0c;它可以隐藏在一组对象集合中&#xff0c;不被识别出来。 目前&#xff0c;提出了 不可关联性和不可观察性两个定义&#xff0c;对于不可关联性&#xff0c;直观的说&…

解决本地jar包导入maven

1、确定是否安装maven 2、输入导入命令 命令说明 <path-to-file>为你jar包所在的路径&#xff08;尽量简单并且不要含中文&#xff09; <group-id>为grouId号&#xff0c;与<artifact-id>组成唯一识别你jar包的坐标&#xff0c;当不在公共资源jar包中&#…

java对mysql的json字段的新增或修改

json mysql对json的支持。方便了一对多的设计&#xff0c;通常一对多的设计需要两张表&#xff0c;一张表a记录“一”&#xff0c;一张表b记录“多”,通常在表b添加一个关联字段记录a的唯一性字段&#xff0c;例如id java对json字段注意点 实体 class A {/*** json字段的属性…

git撤销还未push的的提交

怎样撤销掉上图中的提交呢 使用以下代码即可提交 git reset --soft HEAD^