我有一个单链表的整数。 该节点定义为
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++编写的。如果你能用其他语言帮助我也没关系
目前没有回答
相关问题 更多 >
编程相关推荐