在C++中递归插入和遍历链表
我们得到了用于形成链表的整数值。任务是使用递归方法先插入然后遍历单链表。
在末尾递归添加节点
如果 head 为 NULL → 将节点添加到 head
否则添加到 head( head → next )
递归遍历节点
如果 head 为 NULL → 退出
-
否则打印( 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 <bits/stdc++.h> 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 << head->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++中递归插入和遍历链表的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

C++函数的递归深度受到限制,超过该限制会导致栈溢出错误。限制值因系统和编译器而异,通常在1000到10000之间。解决方法包括:1.尾递归优化;2.尾调用;3.迭代实现。

是的,C++Lambda表达式可以通过使用std::function支持递归:使用std::function捕获Lambda表达式的引用。通过捕获的引用,Lambda表达式可以递归调用自身。

SQL中MINUS的用法及具体代码示例在SQL中,MINUS是一种用于在两个结果集之间执行差集操作的运算符。它用于从第一个结果集中删除与第二个结果集中相同的行。MINUS操作符返回的结果集将包含仅存在于第一个结果集中的行。下面通过具体的代码示例来演示MINUS的用法:假设有两个表-"table1"和"table2",它们的结构如下:表名:table1字段

递归算法通过函数自调用解决结构化的问题,优点是简洁易懂,缺点是效率较低且可能发生堆栈溢出;非递归算法通过显式管理堆栈数据结构避免递归,优点是效率更高且避免堆栈溢出,缺点是代码可能更复杂。选择递归或非递归取决于问题和实现的具体限制。

Java是一种流行的编程语言,具有强大的文件处理功能。在Java中,遍历文件夹并获取所有文件名是一种常见的操作,可以帮助我们快速定位和处理特定目录下的文件。本文将介绍如何在Java中实现遍历文件夹并获取所有文件名的方法,并提供具体的代码示例。1.使用递归方法遍历文件夹我们可以使用递归方法来遍历文件夹,递归方法是一种自身调用自身的方式,可以有效地遍历文件夹中

递归函数是一种在字符串处理中反复调用自身来解决问题的技术。它需要一个终止条件以防止无限递归。递归在字符串反转和回文检查等操作中被广泛使用。

1、打开wps软件,进入wps文字的操作界面。2、在该界面内找到插入选项。3、点击插入选项,在其编辑区域内找到形状选项。4、点击形状选项,在其子级菜单那里找到推荐选项。5、在推荐选项内找到中国地图选项。6、点击中国地图选项,用鼠标左键在编辑输入区里拖拽,就得到了我们需要的中国地图。

递归是一种强大的技术,它允许函数调用自身来解决问题,在C++中,递归函数由两个关键要素构成:基本情况(确定递归何时停止)和递归调用(将问题分解为更小子问题)。通过理解基础知识并练习实战示例(如阶乘计算、斐波那契数列和二叉树遍历),您可以建立递归直觉,并自信地在代码中使用它。
