链表翻转的递归和非递归算法

推荐算法之Thompson(汤普森)采样 如果想理解汤普森采样算法,就必须先熟悉了解贝塔分布。 一、Beta(贝塔)分布 Beta分布是一个定义在[0,1]区间上的连续概率分布族,它有两个正值参数,称为形状参数,一般用α和β表示,Beta分布的概率密度函数形式如下: 这里的Γ表示gamma函数。 Beta分布的均值是: 方差: ... 阅读详情
#include <iostream>
#include <stdio.h>
using namespace std;

template<typename T>
struct Node
{
    Node ( T value ) : mValue(value),mNext(0)
    {
    }
    Node *mNext;
    T mValue;
};

template<typename T>
Node<T> *recursiveReverse( Node<T> *currentNode )
{
    if (currentNode->mNext == NULL)
    {
        return currentNode;
    }
    else
    {
        Node<T>* tmp = recursiveReverse<T>(currentNode->mNext);
        currentNode->mNext->mNext = currentNode;
        currentNode->mNext =NULL;
        return tmp;
    }
}

template<typename T>
Node<T> *
noneRecursive( Node<T> * root )
{
    if ( 0 == root )
    {
        return 0;
    }
    Node<T> * retval = 0;
    while ( root )
    {
        Node<T> *nextNode = root->mNext;
        root->mNext = retval;
        retval = root;
        root = nextNode;
    }
    return retval ;
}

template<typename T>
void dump(Node<T> *head)
{
    while ( head )
    {
        cout << head->mValue<<" ";
        head = head->mNext;
    }
    cout << endl;
}

int main(int, char *[])
{
    Node<int> *head = new Node<int>(0);
    Node<int> *currentNode = head;
    for ( int i = 1 ; i < 10 ; i ++ )
    {
        Node<int> *tmp = new Node<int>(i);
        currentNode->mNext = tmp;
        currentNode = tmp;
    }
    Node<int> *result = recursiveReverse<int>(head);
    dump(result);
    head = noneRecursive<int>(result);
    dump(head);
    return 0;
}


        
从拧螺丝到精密装配:三菱伺服电机扭矩控制在工业自动化中的实战解析 本文深入解析三菱伺服电机扭矩控制在工业自动化中的实战应用,重点介绍MR-J4系列伺服系统的高精度扭矩响应技术。从螺丝紧固到精密装配,详细讲解扭矩控制模式的选择、硬件配置、参数设置及典型故障排查方案,帮助工程师提升生产效率和产品质量。 阅读详情

相关推荐

使用 ANSYS AEDT(双向耦合)对高功率射频同轴滤波器进行热分析

使用 ANSYS HFSS,可以精确计算 EM 损耗,然后将其导入 ANSYS 热分析并使用 ANSYS Icepak CFD 求解器进行仿真,以帮助工程师解决最复杂的热挑战,并预测其设计在温度变化下的表现。然后,RF 损耗将与 ANSYS Icepak CFD 求解器耦合,以执行热分析,包括传热的传导、对流和辐射模式,并计算温度曲线。在此演示中,我们将仿真下面的 RF 同轴滤波器,并计算由于所用材料的有限电导率和介电损耗而导致的 RF 传导损耗。设置 HFSS 设计后,我们可以开始 HFSS 仿真。

jkh920184196的博客 1050

C语言链表翻转算法(包含递归算法和非递归算法)

C语言链表翻转算法 递归算法 Linklist reverselist_rec(LNode *L, LNode *P)//带头结点递归算法 { LNode *N = P; if (P->next == NULL)//当访问到最后一个节点时返回 { L->next = P; return P; } P = reverselist_rec(L, P->next);//返回的节点P是当前节点N的后一个节点 P->next = N;//使返回的节点指向当前节点来实现逐级翻

weixin_44744047的博客 240

在mdk文件移植太多_XCubeClassB代码 的移植

前言ST在www.st.com官网上提供了针对IEC60730/IEC60335 ClassB认证的软件包。软件包分为三个,分别适用STM8,STM32(基于标准外设库)和STM32(基于HAL库):STM8-SafeCLASSB,STM32-CLASSB-SPL,X-CUBE-CLASSB。本文以X-CUBE-CLASSB为例介绍如何做代码的移植以及经常遇到的问题的解决办法。X-CUB...

weixin_28898707的博客 1832

链表的翻转

1.基础问题: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 2.算法 这个基础问题比较简单,具体解法利用分治法的思想,将相邻两个节点看成一组,组内进行交换,组间再串联起来就可以解决这个问题了。 public class Solution24 { public ListNode swapPairs(ListNode h

q172395505的博客 222

电子结构设计(EMD)十年知识总结

客官,你的面相是做结构设计的奇才~1. 材料选择【一出手的0.1s就败了】2. 钣金件设计【折来折去有啥难】3. 塑胶件设计【看着好复杂】4. 型材件设计【凭啥不让我设计】5. 电子结构(PCBA)设计【静电肿么要我背锅】6. 包装设计【要的就是金玉其外,败絮其中】7. 外观(工业)设计【好不好看,谁说了算】8. 标签设计【】9. 标准件选择【一个螺丝难倒英雄汉/提起螺丝,英雄气短】10. 计算仿...

wfeng86的博客 1569

【制作100个unity游戏之22】3DRPG游戏开发01——项目的设置和导入及渲染管线的安装修复

如果你现在存在一些疑惑unity导入素材为什么是粉紫色的?表示他没有适配我们的URP通用渲染管线,要如何适配呢?素材渲染错误丢失要如何解决?如果你有上面3个任意的问题,那这篇文章同样适合你,我将手把手教你如何安装修复渲染管线,看完你就了解了!在Unity中,他们都是渲染管线,它们的主要区别在于性能和功能。LWRP是早期版本的URP,它专门为移动设备和低端PC设计,旨在提供更高的性能。它使用基于顶点的光照和简化的后处理效果,可以在更低的硬件要求下运行。

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

leecode刷题之路:206 翻转链表

leecode:206 翻转链表 参考资料: leecode题解C++实现 一: 链表基本构成 1、链表由链表节点(data)和指向下一个节点的指针(next)构成。 2、代码构成 typedef struct LIST { int data;//节点 LIST* next;//指向下一节点指针 }List,*list_it; 二:创建链表 根据题目选择尾插法建立链表,回车(\n)结束输入 void creat_it(list_it p) { int x; List* s, * r = p; c

m0_49767486的博客 153

05GATK流程和找变异

05GATK流程和找变异 GATK 集合了一套功能全面的高通量测序数据基因组分析工具包,算是业界的权威,更新的速度非常快。需要注意的是,不同版本的 GATK 在工具应用上会有些许不同。这里我们使用是最新版本 GATK 4.1.4.1(截止2019年12月31日)。 数据准备 前面我们提到了,走GATK流程需要到官网下载很多数据库文件,比如下面这些: dbsnp_146.hg38.vcf.gz dbsnp_146.hg38.vcf.gz.tbi Mills_and_1000G_gold_standard.

qq_23435961的博客 1660

从链表翻转的递归算法到递归与栈的关系

早上起来做一个算法题,题目是从尾到头输出链表。 先遍历的后输出,与栈的先进后出特性一样,所以考虑用压栈出栈来解决。 先用非递归算法,比较简单,代码如下;public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { // 方法一:非递归,利用栈先进后出的特性 ArrayList <Integer>res

David2427的专栏 845

【YOLOv11工业级实战】27. TensorRT量化实战:FP16/INT8极致加速!边缘设备YOLOv11推理速度提升4倍,精度损失控制在1.5%内

摘要:本文针对智慧园区200路摄像头实时分析的工业痛点——RTX 3080单卡仅能处理12路视频流(YOLOv11-nano FP32精度45FPS,需≥120FPS且精度损失≤3%),提供TensorRT量化完整解决方案。从原理解析(FP16/INT8精度差异与量化逻辑)到实操落地(ONNX转换、FP16引擎构建、INT8精细校准),全程给出可复用代码。实测显示:FP16量化后速度达128FPS(×2.8),精度损失0.2%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1719

地图自定义编码CSV转换成ini文件

创 建 schema.ini 文件:有时,当您尝试使用 .csv 文件将自定义地理信息导入 Tableau 时,您可能会看到“无法使用.csv,因为它不包含唯一列”错误消息。这是因为您的 .csv 文件可能包含数值数据,例如数值邮政编码。对于新的地理角色,Tableau 将只接受文本字段。但是,您可以创建一个 schema.ini 文件,以指示 Tableau 应将您要导入的数值字段视为文本字段。...

wenyusuran的专栏 1975

Java之单链表翻转

参考博客: http://blog.youkuaiyun.com/beiyetengqing/article/details/7596554非递归算法:a---->b---->c---->d a != null ; b != null; next = b; next = c; a.next = null; b.next = a; pre = a;

lyz12600的专栏 455

OpenClaw 在 Docker 容器中的部署实战——零配置启动

本文介绍了OpenClaw在Docker容器中的快速部署方法,对比了本地部署与容器化部署的优势。通过官方镜像和Docker Compose两种方式,5分钟即可完成部署,并详细讲解了配置管理方案(挂载配置文件和环境变量)。文章还提供了飞书集成配置方法,以及生产环境下的日志管理、资源限制、健康检查等优化建议。最后包含常见问题排查指南,帮助开发者快速实现OpenClaw的容器化部署。

刘一说的IT专栏 904

面试题-单链表反转

问题:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 一 非递归算法:      假设有链表A->B->C->D->E->F->G。在反转链表过程中的某一阶段,其链表指针指向为:AF->G。也就是说在结点D之前的所有结点都已经反转,而结点D后面的结点E开始的所有结点都没有反转。这样D跟E之间存在了断裂。我们如果要实现链表的反转,会有以下几个重要步骤:

三棵石头的博客 540

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C++自定义链表操作实现

author openxmp@163.com 链表操作: 1) 插入 2) operator [] 3) 翻转(递归) 4) 翻转(非递归) 5) 求长度 #include using namespace std; #include templatetypename T> class List { //A template-parame

2193

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

链表翻转系列

Problem I 翻转链表 程序(简洁版) 非递归 ListNode reverseList(ListNode head) { ListNode pre = null; ListNode cur = head; while (cur != null ) { ListNode next = cur.next; cur.next = pre; p...

weixin_30800807的博客 77

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

非递归链表反转

非递归链表反转

Nekoluo的博客 172

LeetCode 206——链表反转(JAVA)

题目: 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 题解: 先上代码: /** * Definition for singly-linked list. * public...

weixin_30492047的博客 154

链表反转(Java三种实现方式)

Mackyhuang 链表这个数据结果经常遇见,这里提供一个链表反转的java代码实现,有三种算法,一种是递归的,俩种是非递归的。 首先为了方便测试,在博文最后贴上递归实现链表创建的代码,以供读者快速上手测试,提供的代码可以复制以后直接测试 先看看Node节点把 public class Node { //链表用于存储值 private final int value;...

Mackyhuang 2万+

剑指offer 二叉搜索树与双向链表

题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 思路1 递归 1 把左子树改成双链表,定位到左子树最后一个节点 2 把右子树改成双链表,定位到右子树第一个节点。 3 如果左子树不为空,把root追加到左子树链表,如果右子树链表也不为空的话,将该链表追加到root节点之后 4 然后根据左子树是否为空,若为空则root为链表头结...

jcjcjcjiangcheng的博客 155

链表翻转

使用了两种方法,递归法 和 非递归法取自 http://www.acmerblog.com/reverse-linked-list-5779.html#include <stdio.h> #include <stdlib.h>struct node { int data; struct node * next; };void push(struct node ** head_re

kunpengku 462

递归算法学习

递归的数学模型是数学归纳法,递归终止条件对应数学归纳法第一步,递推过程对应假设部分,回归过程对应推论部分。

2302_79153304的博客 1874

LeetCode反转链表java_LeetCode 206——链表反转(JAVA)

题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?题解:先上代码:/*** Definition for singly-linked list.* public class ListNode {* i...

weixin_28882149的博客 187

关于递归的一点理解

一、递归的引入 可以先参考:对于递归有没有什么好的理解方法? - 知乎 递归算法讲解_LightOn-优快云博客_递归算法 递归,包含递去和归来两个过程。递归跟数学归纳法有不少相似之处。可参考:递归与数学归纳法_野生码农-优快云博客 1.递归的格式 1.终止条件 一定与输入的参数有关。终止条件决定了递归的深度 2.终止条件处理方法 决定了最后的返回内容 3.递归内容 即明确递归函数是如何调用自己的 2.如何才能写出递归函数 个人感觉递归是需要有经验支撑的。链表、树、字符串或者数字问题

qq_42987967的博客 537

两种方法求单链表逆序

1 递归,很简单 代码: #include using namespace std; typedef struct node{ int data; struct node * pNext; }Node ,*pNode; void createNode(pNode & pHead){ int temp; scanf("%d",&temp); pNode p,q; boo

byf_study_alway的专栏 1132

数据结构算法链表篇之两两交换链表中的节点

两两交换链表节点需要加入虚拟头节点,每次都找到要两两交换的节点前一个节点,操作这个节点的后两个节点。或者使用递归算法,每次都往后移动两个元素操作

weixin_43369836的博客 341
上一篇: 字符串翻转
下一篇: itoa 和 atoi和字符串翻转等操作
乔巴好萌
博客等级 码龄15年 228粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值