在C++中递归插入和遍历链表

在c++中递归插入和遍历链表

我们得到了用于形成链表的整数值。任务是使用递归方法先插入然后遍历单链表。

在末尾递归添加节点

如果 head 为 NULL → 将节点添加到 head

否则添加到 head( head → next )

递归遍历节点

如果 head 为 NULL → 退出

立即学习“C++免费学习笔记(深入)”;

否则打印( head → next )

示例

输入− 1 – 2 – 7 – 9 – 10

输出

输出 strong>− 链表:1 → 2 → 7 → 9 → 10 → NULL

输入− 12 – 21 – 17 – 94 – 18

输出− 链表:12 → 21 → 17 → 94 → 18 → NULL

下面程序中使用的方法如下

在这种方法中,我们将使用函数添加节点并遍历单链表并递归调用它们以进行下一个输入。

采用带有整数和下一个指针 SLLNode* 的结构体 SLLNode 。

函数 addtoEnd(SLLNode* head, int data) 获取指向链表头的指针和数据部分的整数,并将节点添加到链表的末尾。

li>

如果头指针为 NULL,则列表为空,现在添加一个新节点并将其设置为头。将 head → next 添加为 NULL。返回指向该节点的指针

如果 head 不为 null,则使用 head->next = addtoEnd(head->next, data) 将节点添加到 head → next。

函数 traverseList(SLLNode* head) 从 head 开始遍历并打印每个值。

如果 head 为 NULL,则打印 NULL 并返回.

否则打印数据值并使用 traverseList(head->next) 遍历下一个。

在主创建列表中使用addtoEnd() 并使用 traverseList() 打印列表。

示例

#include using namespace std;struct SLLNode {   int data;   SLLNode* next;};SLLNode* addtoEnd(SLLNode* head, int data){   if (head == NULL){      SLLNode *nodex = new SLLNode;      nodex->data = data;      nodex->next = NULL;      return nodex;   }   else{      head->next = addtoEnd(head->next, data);    }   return head;}void traverseList(SLLNode* head){   if (head == NULL){      cout <<"NULL";      return;   }   cout <data < ";   traverseList(head->next);}int main(){   SLLNode* head1 = NULL;   head1 = addtoEnd(head1, 1);   head1 = addtoEnd(head1, 8);   head1 = addtoEnd(head1, 56);   head1 = addtoEnd(head1, 12);   head1 = addtoEnd(head1, 34);   cout<<"Linked List is :"<<endl;   traverseList(head1);   return 0;}

输出

如果我们运行上述代码,将会生成以下输出

Linked List is :1 -> 8 -> 56 -> 12 -> 34 -> NULL

以上就是在C++中递归插入和遍历链表的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444832.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:55:50
下一篇 2025年12月11日 13:54:15

相关推荐

  • 递归解码一个以计数后跟子字符串编码的字符串

    在这个问题中,我们需要通过重复添加总计数次数来解码给定的字符串。 我们可以采用三种不同的方法来解决问题,并且可以使用两个堆栈或一个堆栈来解决问题。另外,我们可以在不使用两个堆栈的情况下解决问题。 问题陈述 – 我们给出了一个字符串 str ,其中包含左括号和右括号、字母和数字字符。我们需…

    2025年12月17日
    000
  • 找到通过插入给定数字形成的最小数字

    在给定的数字中插入一个数字意味着在给定的数字中添加一个新的数字,可以是在数字的前面、后面或者中间。我们已经给出了一个数字和一个数字,并且必须以尽可能小的方式将该数字添加到数字中。为了方便插入操作,我们将把数字转换为字符串。此外,给定的数字也可以是负数,因此我们必须考虑这种情况。 示例示例 Input…

    2025年12月17日
    000
  • 打印从1到100的数字的程序,不使用循环

    这里我们将看到如何编写一个 C 程序,可以在不使用任何命令的情况下打印从 1 到 100 的数字一种循环。 这个问题可以使用递归来解决。我们将创建一个函数,该函数将被调用递归地。我们知道,递归函数基本上有两个部分。基本情况和递归调用等操作。在此函数中,基本情况是参数 n 大于 1。直到达到 1 为止…

    2025年12月17日
    000
  • 使用递归从已排序的链表中删除重复项

    链表是连接在一起的元素序列。每个列表都有一个头和一系列节点,每个节点都有当前节点的数据并链接到下一个节点。链表的基本操作是插入、删除、查找和删除。 从排序链表中删除重复项 删除节点的一​​种方法是使用递归。其思想是将每个节点与其相邻节点进行比较,并删除它们相等的重复节点。 我们的递归调用将返回到下一…

    2025年12月17日
    000
  • 高级主定理用于分治递归

    分而治之 是一种基于递归地将问题分解为多个相似类型的子问题,并且这些子问题可以很容易地解决的算法。 示例 让我们举一个例子来更深入地了解分而治之的技巧 – function recursive(input x size n) if(n < k) Divide the input i…

    2025年12月17日
    000
  • 递归函数在C++中进行子串搜索

    给定两个字符串 Str 和 subStr 作为输入。目标是确定 subStr 中存在的文本是否作为子字符串存在于 Str 中。如果整个 X 在 Y 中至少出现一次,则字符串 X 称为 Y 的子串。我们将使用递归方法来执行此操作。 例如 输入− Str = “tutorialspoint” subSt…

    2025年12月17日
    000
  • 递归程序打印所有小于N的仅由数字1或3组成的数字

    We are given an integer variable as N storing the positive integer type value. The task is to recursively print all the numbers less than given value …

    2025年12月17日
    000
  • 将数组表示的数字加1(递归方法)

    给定一个数组,该数组是由非负数字表示的数字的集合,将数字加1(增加由数字表示的数字)。数字存储方式是最高位数字是数组的第一个元素。 要将数字加1到由数字表示的数字 从数组末尾开始,加法意味着将最后一个数字4舍入为5。 如果最后一个元素是9,则将其变为0并进位=1。 对于下一次迭代,检查进位,如果加到…

    2025年12月17日
    000
  • 二分搜索(递归和迭代)在C程序中的实现

    二分搜索是一种用于在排序数组中查找元素(目标值)位置的搜索算法。在应用二分搜索之前,数组应该被排序。 二分搜索也被称为对数搜索、二分查找、半区间搜索。 工作原理 二分搜索算法通过将要搜索的元素与数组的中间元素进行比较,并根据此比较结果执行所需的过程。 情况1 – 元素 = 中间值,找到元…

    2025年12月17日
    000
  • c语言允许函数的递归调用吗

    c语言允许函数的递归调用吗 允许。C语言中的函数直接或间接调用自己的过程叫递归。 一、递归的两个必要条件 1、存在限制条件,当满足这个条件时,递归便不再继续。 2、每次递归调用之后越来越接近这个限制条件。 立即学习“C语言免费学习笔记(深入)”; 推荐学习:c语言视频教程 二、经典的递归题目-求第n…

    2025年12月17日
    000
  • C#中遍历各类数据集合的方法总结

    c#中遍历各类数据集合的方法,这里自己做下总结: 1.枚举类型  //遍历枚举类型Sample的各个枚举名称 foreach (string sp in Enum.GetNames(typeof(Sample))) { ary.Add(sp); } //遍历枚举类型Sample的各个枚举值 fore…

    好文分享 2025年12月17日
    000
  • python如何遍历一个字典的键和值_python高效遍历字典key和value的技巧

    最推荐使用dict.items()遍历字典键值对,因其可读性强、效率高且内存友好;若只需键或值,可分别使用keys()或values();修改字典时应避免直接迭代原对象,宜通过副本或字典推导式操作。 在Python里,想把字典里的键和值都拿出来溜达一圈,最直接、也最推荐的方法就是用items()。它…

    2025年12月14日
    000
  • 如何实现二叉树的遍历?

    答案是二叉树遍历分为前序、中序、后序和层序四种,分别采用递归或迭代实现,用于系统访问节点,处理空节点需加判断,广泛应用于表达式求值、序列化、LCA查找等场景。 二叉树的遍历,说白了,就是按照某种特定的规则,把树上的每一个节点都“走”一遍,访问一遍。最核心的无非是三种深度优先遍历(前序、中序、后序)和…

    2025年12月14日
    000
  • Python怎样处理JSON嵌套数据结构?递归解析方法

    处理json嵌套数据结构在python中主要依靠递归解析,因为json是树形结构,递归是最自然的处理方式。1. 加载json数据:使用json.loads()将字符串转为字典或列表;2. 创建递归函数处理字典、列表或基本类型;3. 遇到字典遍历键值对,遇到列表遍历元素,遇到基本类型则处理如存储或打印…

    2025年12月14日 好文分享
    000
  • Python中的递归是如何实现的?

    Python中的递归是如何实现的? 递归是一种在算法设计中常用的技术,它可以将一个问题分解成更小的同类问题,并通过不断地调用自身来解决。在Python中,递归函数可以简洁地实现这种分解和调用过程,使得代码更加清晰易懂。本文将介绍Python中递归的实现方式,并提供具体的代码示例。 在Python中,…

    2025年12月13日
    000
  • 在Python中的函数式编程

    函数式编程语言是专门设计用于处理符号计算和列表处理应用的。函数式编程基于数学函数。一些流行的函数式编程语言包括:Lisp、Python、Erlang、Haskell、Clojure等。 函数式编程的特点 函数式编程的最显著特点如下: 函数式编程语言是根据数学函数的概念设计的,它使用条件表达式和递归来…

    2025年12月13日
    000
  • PHP递归遍历数据库结果集_PHP使用递归处理多层查询结果的技巧

    答案:文章介绍了PHP中处理多层级数据的递归技巧,包括构建树形结构数组、限制递归深度防溢出、使用引用优化性能及递归过滤节点。1、将数据库结果转为以ID为键的关联数组,通过递归函数查找子节点并嵌套生成树形结构;2、在递归中添加深度参数,超过设定阈值则终止,防止栈溢出;3、利用引用建立父子关系,一次遍历…

    2025年12月12日
    000
  • PHP递归遍历数组如何做_PHP利用递归遍历多维数组的方法

    答案:通过递归函数可有效遍历多维数组,方法包括基础遍历输出、提取叶子节点值、保留键路径及修改元素值,分别适用于不同场景,确保深层数据被完整访问与处理。 如果您需要处理一个包含多层嵌套的数组,直接使用常规循环将难以完整访问所有元素。通过递归函数可以深入每一层级,确保每个值都被正确读取。以下是几种实现P…

    2025年12月12日
    000
  • PHP递归函数如何避免栈溢出_PHP防止递归栈溢出的有效方法

    答案:通过限制递归深度、使用尾递归优化、改用迭代、利用生成器及调整PHP配置可解决递归栈溢出问题。具体包括设置最大层级防止无限递归,重构为尾递归并传递中间结果,用循环和栈模拟替代递归调用,采用yield减少内存占用,以及合理调整xdebug.max_nesting_level和memory_limi…

    2025年12月12日
    000
  • 如何使用 PHP 递归函数处理数组元素

    通过使用递归函数,我们可以处理复杂的数据结构,如数组元素。这些函数可以自行调用,从而简化了遍历和操作多级结构。在 php 中,递归函数的语法为:function function_name($param)。我们通过在函数内调用自身来实现递归,并在满足特定条件时执行递归。利用递归,我们可以求出数组元素…

    2025年12月12日
    000

发表回复

登录后才能评论
关注微信