나는 어떻게 링크 목록이 작동하는지 알아 내려고 노력했지만 개념을 시각화하는 데 어려움을 겪고있다. 여러 알고리즘을 알고 있지만 구현 방법을 알 수는 없습니다.사용자 지정 연결 목록을 사용하여 정렬을 어떻게 구현해야합니까?
public class LL {
private ListNode front,last;
public LL(){
front = null; last = null;
}
//
//methods here...
//
public class ListNode{
public double coefficient;
public int exponent;
public ListNode next;
public ListNode(){
this(0, 0, null);
}
public ListNode(double coefficient, int exponent, ListNode next){
this.coefficient = coefficient;
this.exponent = exponent;
this.next = next;
}
}
}
이 다항식의 데이터를 저장하기위한 것입니다 :
여기 내 코드입니다. 나는 그들에게 내림차순으로 가도록 노력하고있다. 결국 노드의 계수를 같은 지수로 더합니다.
거품 정렬 알고리즘을 사용할 것 같지만 링크를 어떻게 다시 배열 할 것인지 알 수 없습니다. 나는 또한 remove() 메소드를 추가하고 하나의 노드를 제거하고 정렬 될 때까지 끝에 추가하려고 생각했다. 하지만 매번 새로운 노드를 만들어야하기 때문에 이는 매우 비효율적입니다.
추신 : 나 또한 문자열을 가져 와서 LL로 바꾸는 다항식 클래스가 있습니다. 나는 그것을 게시하는 것이 필요하다고 생각하지 않지만 당신이 그것을 필요로한다면 나는 그것을 게시 할 것입니다! 감사합니다. 연결리스트를 정렬
나는 그것을 할 것이지만 나는 연결된 목록으로 작업해야한다. –
@JohnB 그 경우 JDK가하는 일을하고, 배열로 복사하고, 배열을 정렬하고, 값을 다시 복사한다. 이 방법은 O (N^2) 인 버블 정렬/삽입 정렬 대신 O (N 로그 N) –