2015-01-29 10 views
-3

나는 프로그래밍 과정에 대한 과제를 수행 중이며 목록을 사용하여 데이터를 저장하고 있습니다. 목록 클래스 :내 목록을 정렬 된 목록으로 만들려면 어떻게해야합니까?

public List() { 
    init(); 
} 

protected Node<E> first, current, last; 
public int numberOfNodes; 

public boolean isEmpty() { 
    return numberOfNodes == 0; 
} 

public List<E> init() { 
    numberOfNodes = 0; 
    first = current = last = null; 
    return this; 
} 

public int size() { 
    return numberOfNodes; 
} 

public List<E> insert(E d) { 
    E copy = (E)d.clone(); 
    if (isEmpty()) { 
     first = current = last = new Node(copy); 
     numberOfNodes += 1; 
     return this; 
    } 
    else{ 
     for (current = first; current != null; current = current.next){ 
      if(current.next== null){ 
       current.next = last = new Node(copy); 
       last.prior = current; 
       last.next = null; 
       numberOfNodes += 1; 
       return this; 
      } 
      else{ 
       Node<E> newNode = new Node(copy); 
       current.next.prior = newNode; 
       newNode.next = current.next; 
       newNode.prior = current; 
       current.next = newNode; 
       current = newNode; 
       numberOfNodes +=1; 
       return this; 
      } 
     } 
    } 
    return this; 
} 

public E retrieve() { 
    return (E) current.data.clone(); 
} 

public List<E> remove() {  
    if (isEmpty()){ 
     return init(); 
    } 
    else if (numberOfNodes == 1){ 
     return init(); 
    } 
    else if (current == first) { 
     first = current = current.next; 
     current.prior = null; 
     numberOfNodes -= 1; 
    } 
    else if (current == last) { 
     last = current = current.prior; 
     current.next = null; 
     numberOfNodes -= 1; 
    } 
    else { 
     current.prior.next = current.next; 
     current.next.prior = current.prior; 
     current = current.next; 
     numberOfNodes -= 1; 
    } 
    return this; 
} 

public boolean find(E d) { 
    current = first; 
    while((current!=null && !(d.compareTo(current.data)==0))){ 
     current=current.next; 
    } 
    if (current==null){ 
     return false; 
    }else{ 
     return true; 
    } 
} 

public boolean setFirst() { 
    if(isEmpty()){ 
     return false; 
    } 
    else{ 
     current = first; 
     return true; 
    } 
} 

public boolean setLast() { 
    if(isEmpty()){ 
     return false; 
    } 
    else{ 
     current = last; 
     return false; 
    } 
} 

public boolean getNext() { 
    if(isEmpty()||current == last){ 
     return false; 
    } 
    else{ 
     current = current.next; 
     return true; 
    } 
} 

public boolean getPrior() { 
    if(isEmpty()||current == first){ 
     return false; 
    } 
    else{ 
     current = current.prior; 
     return true; 
    } 
} 

public List<E> clone() { 
    List<E> clone; 
    try{ 
     clone = (List<E>)super.clone(); 
    } catch(CloneNotSupportedException e){ 
     throw new Error("This cannot be cloned!"); 
    } 
    clone.init(); 
    for(Node n = first; n != null; n = n.next){ 
     clone.insert((E)n.clone().data); 
    } 
    clone.numberOfNodes = this.numberOfNodes; 
    return clone; 
} 

이제 할당은 목록을 정렬 된 목록으로 만들고 항목을 큰 것부터 작은 것으로 정렬하는 것입니다. sortedList라는 별도의 클래스에서이 작업을 수행해야합니다.

나는 시작했다,하지만 난 다음에 수행 할에 정말 아무 생각이 없다 : 나는 두 개의 서로 다른 개체에 대한 내 프로그램의 목록을 사용하고

public class SortedList extends List implements Comparable { 
public int compareTo(Object o) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

} 

을 : 내가 내 설정 클래스의 목록을 사용하여 . 세트는 기본적으로 자연수의 모음입니다. 예 : {1,2,3,4,5}는 집합입니다.

또한 내 표 클래스에서 목록을 사용합니다. 테이블은 변수로 구성됩니다. 변수는 키와 값으로 구성됩니다. 키는 식별자 (예 : Alfa)이고 값은 Set {1,2,3}입니다. 할당은 목록의 항목을 큰 순서에서 작은 순서로 정렬하는 것입니다.

그래서 SortedList는 목록 클래스를 확장하는 별도의 클래스 여야합니다! 어떻게해야합니까? 많은 많은 감사합니다! 수단,이요소 Comparable하지 List (타입)이 될 것을 -

+0

하는 항목이 정렬 하시겠습니까? –

+2

추가하는 것보다 작은 요소를 찾을 때까지 목록을 내려다 보는 삽입 정렬을 할 수 있습니다. 이것은 삽입 지점입니다. –

+0

두 개의 다른 객체에 대해 내 프로그램에서 목록을 사용하고 있습니다. 내 Set 클래스에서 목록을 사용합니다. 세트는 기본적으로 자연수의 모음입니다. 예 : {1,2,3,4,5}는 집합입니다. 또한, 내 테이블 클래스에서 목록을 사용합니다. 테이블은 변수로 구성됩니다. 변수는 키와 값으로 구성됩니다. 키는 식별자 (예 : Alfa)이고 값은 Set {1,2,3}입니다. 할당은 목록의 항목을 큰 순서에서 작은 순서로 정렬하는 것입니다. 어떻게해야합니까? 많은 많은 감사합니다! –

답변