单链表逆置的递归与非递归算法 [简单的小算法练习]

用递归方法逆置带头结点的单链表 /** *    实验题目: *        用递归方法逆置带头结点的单链表 *    实验目的: *        掌握单链表递归算法设计方法 *    实验内容: *        用递归方法逆置一个带头结点的单链表 */ #include <stdio.h> #include <malloc.h> typedef char ElemType; typedef s... 阅读详情

[问题表述]

单链表逆置的算法,不管是递归还是非递归的情况下,其实策略有多种,此处只列出其中一种

 

[问题解答]

 

 

[程序的输出]:

 

SingleLink(0x3d2578) ->(0x3d2578 )10->(0x3d2568)9->(0x3d2558)8->(0x3d2548)7->(0x3d2538)6->(0x3d2528)5->(0x3d2518)4->(0x3d2508)3->(0x3d24f8)2->(0x3d2490)1
SingleLink(0x3d2490) ->(0x3d2490)1->(0x3d24f8)2->(0x3d2508)3->(0x3d2518)4->(0x3d2528)5->(0x3d2538)6->(0x3d2548)7->(0x3d2558)8->(0x3d2568)9->(0x3d2578)10
SingleLink(0x3d24f8) ->(0x3d24f8 )10->(0x3d2578 )9->(0x3d2568)8->(0x3d2558)7->(0x3d2548)6->(0x3d2538)5->(0x3d2528)4->(0x3d2518)3->(0x3d2508)2->(0x3d2490)1

 

注意红色的部分“地址”不同是 由于采取的策略方式的原因。

递归实现不带头结点的单链表逆置 阅读详情

相关推荐

55-将单链表原地逆置(三种方法)

void Reverse(HeadList *head) { if(head==NULL||head->next==NULL||head->next->next==NULL) return ; HeadList *s=NULL; HeadList *p=head->next; HeadList *q=p->next; while(p!=NULL) { p->next=s; s=p; p=q; if(q!=NULL) { q=q-&.

LINZEYU666的博客 5858

6-5 逆置单链表(递归法)

逆置单链表(递归法) 第一行输入一个数n,第二行输入n个数。 输出样例: 输出逆置后单链表结点值。 题解:

qq_60245590的博客 824

利用递归思想实现链表逆置

算法思想:如果采取不建立新的单链表的方法逆置链表,我们就利用递归的思想实现链表的逆置。首先设置一个指向原链表最后一个结点5的指针newhead,并且由于完成逆置后的链表的头结点是结点5,所以newhead始终指向结点5。 然后每次回溯使作如下处理,head->next->next=head,即把head指针指向的空间地址赋给head->next->next指针,并且要使he...

qq_20514371的博客 4172

单链表的逆置

单链表的逆置 给定单链表1->2->3->4->5 返回被反转后的链表5->4->3->2->1 法一:递归实现 解题思路: 使用递归函数,一直递归到链表的最后一个结点,该结点就是反转后的头结点,记作ret 此后,每次函数在返回的过程中,让当前结点的下一个结点的next指针指向当前结点 同时让当前结点的next指针指向NULL,从而实现从链表尾部开始的局部反转 当递归函数全部出栈后,链表反转完成。 //不带头结点的单链表 Node* reverseLi

mlyhzt的博客 2503

小白算法积累——单链表3#带头结点单链表+逆置输出

题目:设L为带头结点的单链表,编写算法实现从尾到头反向输出每个结点的值。 关键字:带头结点单链表,逆向输出 思路 关注:递归算法的设计重点在于找到“递归”的部分,即重复调用函数,改变部分相关变量 设f(L,x)的功能是:删除以L为首结点指针的单链表中所有值等于x的结点,显然有f(L->next,x) 1.通用逆置函数:遍历循环+头尾元素互换 需要变量:L, 相对头尾结点下标:from, to...

aprilzj123的博客 2621

CTP-API开发系列之三:柜台系统简介

综合交易平台(Comprehensive Transaction Platform,CTP)是专门为期货公司开发的一套期货经纪业务管理系统,由交易、风险控制和结算三大系统组成。接下来分享的内容,对于期货公司的负责交易、运维同事会比较熟悉,针对CTP-API接口对接的朋友可以了解一下,在接口之上的系统是怎样的。

码上助君的专栏 6202

单链表就地逆置递归与非递归的方法

//1.用递归算法,对于不带头结点的单链表(a1,a2,a3,a4,a5,a6)逆置后的结果为(a6,a5,a4,a3,a2,a1) //考虑递归算法,若只有一个结点,则直接返回,若存在两个结点(a1,a2)则需要做的操作有:      a2->next=a1;a1->next=NULL;return a2; //a2即新的头结点,若有三个结点,则应先将子链(a2,a3)先逆置且返回该子链的新

lzh8430000的专栏 2397

SAP 对接CBS(http方式)

CLEAR:lv_xml_crc32_string. CONCATENATEcrc32_passwordcrc32_keyi_stringINTOlv_xml_crc32_string. CONDENSElv_xml_crc32_string. CALLFUNCTION'SCMS_STRING_TO_XSTRING' EXPORTING text=lv_xml_crc32_string encoding='8400' "GB...

3598

逆置链表的三种方法

【代码】逆置链表的三种方法。

qq_61832249的博客 2710

【NIFI】实现HANA->ORACLE数据同步

实现 HANA->ORACLE数据同步。

weixin_43159039的博客 1510

别再为格式发愁:safetensors转GGUF的三种高效方法及Ollama集成对比

本文详细介绍了将safetensors格式转换为GGUF格式的三种高效方法,包括llama.cpp原生转换、GGUF官方工具链和Transformers中转方案,并对比了它们在Ollama集成中的表现。文章还提供了实际项目中的踩坑经验和性能调优建议,帮助开发者快速掌握模型转换技术。

weixin_42651281的博客 641

单链表的逆置方法

前言 单链表的逆置方法有很多种,此文简要说明以下两种方法 1.头插法 2.就地逆置法 3.递归 1.头插法 主要思路:遍历的过程中,将遍历的每一个元素依次插入到表头header之后 代码如下: void ReverseList(LinkList& head) { LinkList p,q; p = head->next; head->next = NULL; while (p) { q = p; p = p->next; q->next = hea

Vagrant_pursue的博客 2万+

LeetCode 面试经典 150 题回顾

最经典 150 题,掌握面试所有知识点 面试经典 150 题 : 题目分析、解题思路、复杂度分析、代码展示

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 8万+

单链表的就地逆置

单链表的就地逆置是指辅助空间O(1)的逆置方法,有两种方法:普通循环(头插法重新建立带头节点的新链表)和递归。下面我们详细介绍这两种方法:方法一:头插法算法思想:逆置链表初始为空,表中节点从原链表中依次“删除”,再逐个插入逆置链表的表头(即“头插”到逆置链表中),使它成为逆置链表的“新”的第一个结点,如此循环,直至原链表为空。void converse(LinkList *head) { Lin...

赞美月亮的专栏 10万+

在 SAP S/4HANA 分析模型中添加 Measures,Calculated、Restricted、Currency Conversion 与 Unit Conversion 的建模思路

摘要: SAP S/4HANA分析查询建模中,度量(measure)的加工层级是关键难点,涉及聚合时机、币种/单位语义、过滤上下文等复杂因素。度量不仅是数字字段,还需处理计算口径(Calculated Measures)、上下文绑定(Restricted Measures)和单位转换等问题。Calculated Measures适合派生指标(如毛利率),需注意聚合前后计算差异;Restricted Measures通过固化过滤条件(如区分实际/计划金额)确保业务语义一致性。建模时应将业务逻辑下沉到分析模型层

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1025

【推荐100个unity插件之24】实现2d交互式草树叶和随风飘动的效果——pixelgraphics插件

【推荐100个unity插件之23】实现2d交互式草树叶和随风飘动的效果——pixelgraphics插件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1684

逆置单链表——递归与非递归

文章目录前言方式一:非递归原理图解实现代码方式二:递归原理图解实现代码完整实现代码运行结果 前言 单链表的逆置图解 方式一:非递归 原理 非递归逆置单链表的本质是创建一个新的链表,遍历原先的链表,利用头插法将节点插入新的链表当中去。 图解 实现代码 //链表节点定义 typedef struct link_list{ int data; struct link_list *next; }singel_link_t; /************************************

Aa_lihua的博客 3681

C# NX二次开发-查找连续倒圆角面

可以通过ufun函数 UF_MODL_ask_face_type 和 UF_MODL_ask_face_props 可判断处理选择相应的一组圆角面。在QQ群里有人问怎么通过一个选择一个倒圆角面来自动选中一组倒圆角面。这个是初步思路,如果有更好的思路可回复讨论一下。

fhqiwmc的博客 620

单链表反转(逆置)——(四种方法实现)

链表逆置就是把最后以一个提到坐前面,倒数第二个放到第二个……直到第一个到最后一个。 由于链表没有下标,所以不能借助下表来实行数据的逆置,要靠空间的转移来完成链表的逆置 这里采用没有头节点的链表来实现逆置。 第一种——头插法 算法思想:逆置链表初始为空,表中节点从原链表中依次“删除”,再逐个插入逆置链表的表头(即“头插”到逆置链表中),使它成为逆置链表的“新”的第一个结点,如此循环,直至原链表为空。 #include <stdio.h> #include <stdli...

m0_58397166的博客 8万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

单链表的逆置-C++实现

对于单链表的逆置有两种方法可以实现: (1)利用辅助指针          基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。          实现代码: typedef int DataType; //类型定义 typedef struct node{ //单链表定义 DataType data;

heyabo 7万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

单链表逆置——C++实现的两种方法

方法一: 实现单链表逆置的时候,把下一节点提前保存,然后修改指向关系,再更新遍历的节点,最后更改头指针的指向和引用即可 //方法一 #include &lt;stdio.h&gt; //单链表的结构体 typedef struct node { int data; struct node* next; }Node,*pNode; void reverseLinkList(pNode...

jeremiah的博客 5292

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

递归逆置带头结点的单链表_C/C++&Java

递归逆置带头结点的单链表_C/C++&Java 这周的算法作业之一,逆置这步倒不是很难想。 逆置这步就先递归到最深层,让尾巴指向自己的父节点,然后返回到父节点,让node.next.next指向node就可以实现指向父节点,之后每返回到上层就这样执行,所以递归调用代码要在node.next.next = node 这行代码之前执行。 但是昨晚有两个问题没想出来,就一直困扰着我。 怎么让头...

滑技工厂的博客 3818

python递归逆置一条单链表详解

递归逆置的做法真的很巧妙,最好要画图自己

2138

逆置无头结点的单链表

对于不带头结点的单链表L,设计一个递归算法逆置所有结点。编写完整的实验程序,并采用相应数据进行测试。 采用递归方法 思路:设f(L)返回单链表逆置后的首结点指针,为“大问题”,则f(L->next)返回逆置后的首结点指针p,为“小问题”,当小问题解决后,大问题的求解只需要将首结点(L指向它)链接到L->next节点的末尾就可以了。 #include<iostream> using namespace std; #define NULL 0 typedef struct node {

lxy99的博客 5412

单链表的逆置(头插法和就地逆置)

今天课间的时候偶然看到了一个面试题:单链表的逆置,看了题解感觉乖乖的,貌似和以前看的版本不搭,于是重新进行了一番探究 单链表的逆置分为两种方法:头插法和就地逆置法,这两种方法虽然都能够达到逆置的效果,但还是有着不小的差别头插法算法思路:依次取原链表中的每一个节点,将其作为第一个节点插入到新链表中,指针用来指向当前节点,p为空时结束。 核心代码void reverse(node*head) {

摩尔的博客 7万+
上一篇: 有关回文数的一个问题
下一篇: 使用位图法判断整形数组是否存在重复 (待续)
roynee
博客等级 码龄18年 31粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值