当前位置: 首页 > 编程笔记 >

在C ++中查找链接列表的长度(迭代和递归)

萧阳波
2023-03-14
本文向大家介绍在C ++中查找链接列表的长度(迭代和递归),包括了在C ++中查找链接列表的长度(迭代和递归)的使用技巧和注意事项,需要的朋友参考一下

在这里,我们将看到如何使用迭代和递归方法查找链表的长度。如果给出了头指针,我们必须遵循以下步骤来获取长度。

  • 对于迭代方法-

    • 以列表的开头,直到当前指针不为空,再转到下一个节点并增加计数。

  • 对于递归方法-

    • 将head作为参数传递,基本条件是参数为null时,然后返回0,否则递归进入列表并从当前节点发送下一个节点,返回1 +子列表的长度

示例

#include<iostream>
using namespace std;
class Node {
   public:
      int data;
   Node* next;
};
void append(struct Node** start, int data) {
   struct Node* new_node = new Node;
   new_node->data = data;
   new_node->next = (*start);
   (*start) = new_node;
}
int count_recursive(Node* start) {
   if (start == NULL)
      return 0;
   return 1 + count_recursive(start->next);
}
int count_iterative(Node* start) {
   int count = 0;
   Node* current = start;
   while (current != NULL) {
      count++;
      current = current->next;
   }
   return count;
}
int main() {
   Node* start = NULL;
   append(&start, 1);
   append(&start, 3);
   append(&start, 1);
   append(&start, 2);
   append(&start, 1);
   cout << "Node count using iterative approach: " << count_iterative(start) << endl;
   cout << "Node count using recursion: " << count_recursive(start);
}

输出结果

Node count using iterative approach: 5
Node count using recursion: 5
 类似资料:
  • 问题内容: 编辑:获得一些反馈后,我创建了一个新示例,该示例应更具可重复性。 我一直在用C 编写一个项目,其中涉及许多链表迭代。为了获得基准,我重写了Go中的代码。令人惊讶的是,我发现即使将-O标志传递给clang ,Go实现的运行速度也始终稳定〜10%。可能我只是缺少一些C ++的明显优化,但是我已经通过各种调整将自己的头撞墙了一段时间了。 这是一个简化的版本,在C 和Go中具有相同的实现,其中

  • 问题内容: 如果我在java中的链表上使用了for-each循环,是否可以保证以它们在列表中出现的顺序迭代元素? 问题答案: 保证链表按顺序运行。 从文档中 有序集合(也称为序列)。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过其整数索引(列表中的位置)访问元素,并在列表中搜索元素。 iterator() 以适当的顺序返回此列表中元素的迭代器。

  • 本文向大家介绍在C ++的链接列表中查找峰值元素,包括了在C ++的链接列表中查找峰值元素的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序,该程序在给定的链表中查找峰值元素。 峰值元素是大于周围元素的元素。让我们看看解决问题的步骤。 为链表创建一个struct节点。 用伪数据创建链接列表。 检查基本情况,例如链表是否为空或长度为1。 将第一个元素存储在一个名为previou

  • 本文向大家介绍如何在C#中查找StringBuilder的长度?,包括了如何在C#中查找StringBuilder的长度?的使用技巧和注意事项,需要的朋友参考一下 要在C#中查找StringBuilder的长度,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-

  • 我有一个具有3个属性的类: 此类的项目将添加到列表中<代码>列表 我想在列表中找到一个指定价格的对象。但大小和类型并不重要。我可以这样做吗:

  • 上周我刚开始在工作中学习Python。我正在尝试与我们的人力资源系统集成,并使用每个API将信息上传到Okta(我们的SSO提供商)。 HR API以以下格式输出一个json文件 然后,我想将它输入到一个名为的变量中,并将其放在我的代码中: 我希望遍历Result>EmployeeId>DisplayValue并将它们打印到一个dict中,然后在代码的另一部分中遍历这些