학위가 노드에 포함되어있는 다항식 링크 된 목록을 정렬하려고합니다. 예를 들어 다항식 5x^2 + 5x + 5의 poly.term.degrees는 2,1,0이됩니다. 불행히도 다항식을 추가하는 메서드를 가지고 있지만 반대 식 (5 + 5x + 5x^2)으로 반환합니다.이 작업을 완료하지 못하면이 과제를 수행 할 수 없으므로 다음과 같은 정렬 방법을 사용해야합니다. 그것. 몇 번 시도했지만 그것의 걸림쇠를 얻을 수없는 것 -이 메서드를 통해 연결된 목록의 머리를 전달하면 지나가고 나머지 노드를 삭제하는 머리 만 반환합니다. 아무도 나를 도울 수 있습니까?이 연결된 목록을 정렬 하시겠습니까?
또는 addToFront 대신 다항식을 추가하는 동안 addToRear 메서드를 사용할 수도 있지만 하나의 작업을 얻지 못하는 것 같습니다 ... 진행중인 정렬 방법과 진행중인 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
반전은 괜찮습니다.하지만 정렬은 더 좋을 것이라고 생각합니다. 불행히도이 할당은 연결된 목록으로 제한되며 명시 적으로 작업해야하며 더 쉽게 변환 할 수있는 크레딧을주지는 않습니다. (나는이 시간을 아무 소용이 없다. – hendersawn
단순히 'while (curr! = null)'? –