编写一个函数来计算给定单链表中的节点数。
例如,对于链表 1->3->1->2->1,函数应该返回 5。
迭代解决方案
1) 初始化计数为 0 2) 初始化一个节点指针,current = head。 3) 在 current 不为 NULL 时执行以下操作 a) current = current -> next b) count++; 4) 返回计数
以下是上述算法的迭代实现,用于查找给定单链表中的节点数。
// 递归 C++ 程序,用于查找链表中节点的长度或计数 #include <bits/stdc++.h> using namespace std; /* Link list node */ class Node { public: int data; Node* next; }; /*给定一个指向头部的引用(指向指针的指针) 一个列表和一个整数,在前面推一个新节点 的名单。*/ void push(Node** head_ref, int new_data) { /* 分配节点 */ Node* new_node = new Node(); /* 放入数据 */ new_node->data = new_data; /* 将旧列表从新节点链接起来 */ new_node->next = (*head_ref); /*移动头部指向新节点*/ (*head_ref) = new_node; } /* 递归计算链表中的节点数 */ int getCount(Node* head) { // 基本情况 if (head == NULL) { return 0; } // 计算这个节点加上列表的其余部分 else { return 1 + getCount(head->next); } } /* 测试计数功能的驱动程序*/ int main() { /* 从空列表开始 */ Node* head = NULL; /* 使用 push() 构造下面的列表 1->2->1->3->1 */ push(&head, 1); push(&head, 3); push(&head, 1); push(&head, 2); push(&head, 1); /* 检查计数功能 */ cout << "节点数为 " << getCount(head); return 0; }
输出:
节点数为 5