在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 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 :1 -> 8 -> 56 -> 12 -> 34 -> NULL

登录后复制

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

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2582576.html

(0)
上一篇 2025年3月6日 14:20:38
下一篇 2025年3月6日 14:20:51

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 递归程序在C++中检查一个数字是否是回文数

    我们得到一个整数作为输入。目标是使用递归来确定输入数字 Num 是否为回文。 要检查一个数字是否为回文,请反转该数字并检查两个数字是否相同。如果反转后的数等于原数,则为回文。 示例 输入− Num = 34212; 输出− 34212 不是…

    2025年3月6日
    200
  • 将以下内容翻译为中文:使用递归在C程序中将二进制转换为格雷码

    二进制数是只有两位 0 和 1 的数字。 格雷码是一种特殊类型的二进制数,其属性是代码的两个连续数字 em> 的差异不能超过一位。格雷码的这一特性使其在 K-map、纠错、通信等方面更加有用。 这使得二进制到格雷码的转换成为必要。那么…

    2025年3月6日
    200
  • 递归练习问题与解决方案

    在本文中,我们将讨论一些递归练习问题及其详细解决方案。 让我们首先了解什么是递归以及它是如何工作的: 递归 – 递归是一种编程技术,其中函数或方法多次调用自身以解决问题。该函数将问题分解为更小的子问题并解决它们,直到达到基本情况…

    2025年3月6日
    200
  • 递归冒泡排序的C程序

    冒泡排序是最简单的排序算法之一,用于通过比较相邻元素对数据进行排序。所有元素都分阶段进行比较。第一阶段将最大值放在最后,第二阶段将第二大元素放在倒数第二个位置,依此类推,直到完整列表排序完毕。 冒泡排序算法 int arr[5]= { 5,…

    2025年3月6日
    200
  • C++程序,使用递归将二进制数转换为格雷码

    格雷码或反射二进制码是一种特殊类型的数字二进制表示形式,其中两个连续值仅在一位上不同。例如,1和2的二进制等价物是01和10,这里有两个位正在改变。但在格雷码中,1是01,2是11,只有一位在变化。在本文中,我们将了解如何使用 C++ 中的…

    2025年3月6日
    200
  • 递归地打印给定的模式

    在这里,根据给定的问题模式,需要使用递归方法来显示。 递归函数是一个调用自身n次的函数。程序中可以有n个递归函数。递归函数的问题在于它们的复杂性。 算法 STARTStep 1 -> function int printpattern…

    2025年3月6日
    200
  • 递归插入排序的C程序

    插入排序是一种排序算法,它是一种基于就地比较的算法。 该算法的工作原理是将元素放置在已排序子数组中的位置,即元素之前的子数组是排序子数组。 算法 Step1 – 从 1 到 n-1 循环并执行 – Step2 .1 …

    2025年3月6日
    200
  • C++ 递归函数与循环的比较?

    递归函数和循环的比较:递归函数:简洁、易于理解,但可能导致调用栈溢出和性能开销。循环:代码控制好、效率高,但代码冗长、理解困难。实战案例:阶乘计算示例展示了递归函数和 for 循环的不同实现和输出。 C++:递归函数与循环的比较 概述 递归…

    2025年3月6日
    200
  • C++ 递归函数在图数据结构中的应用?

    c++++ 递归函数在图数据结构中可广泛应用,特别是在深度优先搜索 (dfs) 等算法中。dfs 算法通过递归探索节点的邻接节点来遍历图,可用于查找路径、连通分量和循环。以下 c++ 函数实现了 dfs 算法:dfs(graph, node…

    2025年3月6日
    200
  • C++ 递归函数在算法设计中的作用?

    递归函数在 c++++ 算法设计中通过分解问题、重复解决子问题并优化效率发挥作用。它的语法是通过自身调用解决问题的函数。递归函数的实际应用包括计算阶乘、查找树的最大深度、求解迷宫、反转列表和排序算法。 C++ 递归函数在算法设计中的作用 递…

    2025年3月6日
    200

发表回复

登录后才能评论