gpt4 book ai didi

java - 按度数对多项式链表进行排序

转载 作者:行者123 更新时间:2023-12-02 04:19:57 25 4
gpt4 key购买 nike

我试图按降序对存储在链表中的多项式进行排序,但该算法似乎错过了链表的最后一个节点,因此多项式的最后一项始终未排序。有谁知道如何解决这一问题?

Node prev = mult.poly; //mult.poly is a pointer to the first node of the polynomial linked list 
Node curr = mult.poly.next;

do{
if (curr.term.degree < prev.term.degree){ //compare degrees
int temp2 = curr.term.degree;
curr.term.degree = prev.term.degree;
prev.term.degree = temp2;

float temp3 = curr.term.coeff;
curr.term.coeff = prev.term.coeff;
prev.term.coeff = temp3;

prev = mult.poly;
curr = mult.poly.next;
}

prev = prev.next;
curr = curr.next;
} while(curr!=null);

return mult;
}

最佳答案

您已尝试实现 bubble-sort在链表上。冒泡排序在一个循环内运行一个循环,而您只实现了内部循环 - 这就是它不起作用的原因。

示例:

for (int i = 0; i < list.size(); i++) {
Node prev = mult.poly; //mult.poly is a pointer to the first node of the polynomial linked list
Node curr = mult.poly.next;

do {
if (curr.term.degree < prev.term.degree){ //compare degrees
int temp2 = curr.term.degree;
curr.term.degree = prev.term.degree;
prev.term.degree = temp2;

float temp3 = curr.term.coeff;
curr.term.coeff = prev.term.coeff;
prev.term.coeff = temp3;

prev = mult.poly;
curr = mult.poly.next;
}

prev = prev.next;
curr = curr.next;
} while(curr!=null);
}
return mult;

提示:要调试在按还原顺序排序的列表上运行的冒泡排序,这将使您更容易捕获冒泡排序中的错误。

关于java - 按度数对多项式链表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902897/

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