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

在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++中递归插入和遍历链表的详细内容,更多请关注编程之家其它相关文章

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...