我想排序一个多项式链表,其中度包含在节点中。例如,多项式5x^2 + 5x + 5的poly.term可以是2,1,0。不幸的是,我有一种方法添加了多项式,但是以相反的方式返回它们(5 + 5x + 5x^2),这不会让我相信我要完成的这个任务,所以我需要为它。我尝试了几次,但我似乎无法得到它的挂钩 - 通过此方法传递链表的头部仅返回我通过的头并删除剩余的节点。有人可以帮我吗?对这个链表进行排序?
另外,我可以使用addToRear方法,而添加多项式,而不是一个addToFront,但我似乎无法得到一个工作...我发布我的进行中的排序方法和正在进行的addToRear下面,任何输入将不胜感激!
private void sort(Node head) // CURRENTLY BROKEN!!!!!!!!!!
{
Node temp;
Node curr = head;
while(curr.next != null)
{
if(curr.term.degree < curr.next.term.degree) //either degree is smaller or greater
{//swap
temp = curr; //save first element
curr = curr.next; //set first element to second
temp.next = curr.next; //set next of first to third
curr.next = temp; //set second element to the first that we saved before
}
curr = curr.next; //move to next element
}
}
private void addToBack(float coeff, int deg, Node head)
{
if(head==null)
{
// System.out.println("List empty, creating new node");
Node n = new Node(coeff,deg,head);
head = n;
System.out.println(head.term.coeff);
}
else
{
Node n = new Node(coeff,deg,head);
Node temp = head;
while(temp.next!=null)
{
System.out.println("a");
temp.next=temp;
}
head = n;
}
}
您是否需要执行排序或只是反转?后来更简单。你也坚持你的链接列表的实现?你不能使用库实现或简单的数组吗? – Aivean 2014-09-22 21:20:26
逆转是好的,虽然排序会更好,我认为。不幸的是,这项任务仅限于链接列表,他们明确要求你与他们合作,并不会给他们转换他们更容易的信用:(我已经花了几个小时对此无济于事 – hendersawn 2014-09-22 21:39:59
是不是只是'while( curr.next!= null)'应该只是'while(curr!= null)'? – 2014-09-22 21:45:40