如何只需一次迭代就可以找到链表中的四分位数

2024-05-13 17:49:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个单链表的整数。 该节点定义为

    class Node {
        public:
            int value;
            Node *next = NULL;

    };

我需要分别找到q1、q2和q3(第一、第二和第三个四分位数)。 使用两次遍历很容易找到,第一次遍历查找链表的长度,第二次遍历查找精确的元素。 但是,如何只通过一次遍历链表就找到它呢? 为了找到q2(中值),我们可以使用慢速和快速指针方法。在每次迭代中,我们将增加一个指针到一个步骤,第二个指针到两个步骤。 在这种情况下,我们将得到链表的一半大小的位置

但如何找到第一季度和第三季度? 我已经做了代码来找到中间值(q2)

void findQuartiles(Node *head)
{
    Node *q2 = head;
    Node *temp = head;
    int q2_data;
    while(temp)
    {
        q2_data = q2->value;
        q2 = q2->next;
        temp = temp->next->next;
    }
    cout<<"\nq2 = "<<q2_data;
}
<>这个代码是用C++编写的。如果你能用其他语言帮助我也没关系


Tags: 代码nodedata节点value步骤整数temp