gpt4 book ai didi

algorithm - 弗洛伊德算法 - SIGTSTP 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:41:10 26 4
gpt4 key购买 nike

我正在研究一个问题,以查找给定链表中循环(如果有)中存在的节点数。下面是接受节点头的函数,使用 Floyds 循环算法检查循环,如果找到,则给出循环中的节点数。在运行程序时,它会给出运行时错误 SIGTSTP,据我所知,这是在程序执行期间停止时传递的信号,考虑到这一点,我无法看到此代码中要更改的内容。在调试时,突出显示的部分似乎是问题的根本原因。

请阐明 SIGTSTP 的含义以及如何在 C++ 中处理它。

int countNodesinLoop(struct Node *head)
{
Node* slow = new Node;
Node* fast = new Node;
slow = head;
fast = head;

**do{
if(slow==NULL || fast==NULL || fast->next==NULL)
return 0; // LOOP NOT FOUND
slow = slow->next;
fast = fast->next;
fast = fast->next;
}while(slow!=head);**

// LOOP FOUND
slow = head;
while(slow!=fast)
{
slow = slow->next;
fast = fast->next;
}
// BOTH SLOW AND FAST POINT TO THE NODE WHERE LOOPS START
int ans = 1; // COUNTER
slow = slow->next;
while(slow!=fast)
{
slow = slow->next;
ans++;
}
return ans;
}

最佳答案

我不知道您为什么会看到 SIGTSTP —— 可能是资源受限环境中的超时?

检查第一个循环中的循环条件。

另外,不要为 slowfast 使用 new 分配空节点。这些是内存泄漏。

关于algorithm - 弗洛伊德算法 - SIGTSTP 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50703792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com