【发布时间】:2018-10-24 18:03:06
【问题描述】:
这都是假设,
我有一个这样的结构:
struct node
{
int data;
node* next;
};
和一个只有一个头指针的循环链表,我将如何为一个计算循环链表节点的递归函数设置一个基本情况?我什至不知道从哪里开始,因为我集思广益,很快意识到行不通,因为列表中的最后一个节点直接指向头部而不是 NULL。
示例函数:
int count(node *head)
{
int listCount = 0;
if(base case)
{
then return 0;
}
else
{
calculate listCount
count(head->next);
}
return listCount
}
【问题讨论】:
-
您能否包含实际的 C++ 代码,而不仅仅是一些无法编译的虚拟代码?链表是一种极其常见的数据结构,所以如果您不熟悉它们是什么,那么在一些open courseware 中进行入门是个好主意。
-
我正在处理一个构建循环链表并使用固定“头”指针的目标文件,我想在单独的 cpp 文件中实现此循环链接的递归函数列表。我无法发布代码,因为我什至不知道从哪里开始递归函数的基本情况。我接受的每个选项都会导致无限递归调用。
-
所以我真正难过的是,我如何在递归函数中达到一个基本情况,该函数涉及一个只有一个头指针的循环链表(最后一个节点指向头) .
-
count 是节点的成员吗?如果 node 是您的函数知道的唯一状态,则根据定义,这对于循环列表是不可能的。
-
对不起,这是一个本地 int 变量,让我编辑帖子以反映这一点。
标签: c++ recursion linked-list