此代码应该使用包装函数来计数所有节点。这是一个循环链表,所以我用temp指向Rear-> next,然后用temp遍历直到temp == rear。
int count_all(node *rear) {
int count = 0;
if (!rear)
return 0;
if (rear == rear->next)
return 1;
return recursive_count_all(rear,count);
}
int recursive_count_all(node *rear,int &count) {
if (!rear)
return 0;
node * temp = rear->next;
if (rear == temp)
return 1;
else
temp = temp->next;
return recursive_count_all(rear->next, ++count);
}
您最终有无限递归,因为您的有条件回报
if (rear == temp)
return 1;
正在将您的上一个节点与下一个节点进行比较,因此不会返回#nodes>1。一旦到达开始的第一个节点,就应该中断有条件的递归。