자바로 링크드리스트를 만드는 과정입니다. 오름 차순으로 정렬 되도록 해야되서 add 메소드를 이렇게 정의하였습니다.
public class SortedLinkedList<T extends Comparable<T>> extends LinkedList<T> {
@Override
public void add(T item) {
Node newNode = new Node();
newNode.item = item;
newNode.next = null;
if(list == null)
{
System.out.println("loc == null");
list = newNode;
++size;
}
else
{
Node prevLoc = null;
Node loc = list;
while(loc!=null)
{
int comp = item.compareTo(loc.item);
System.out.println(comp);
if(comp>0)
{
System.out.println("cmp > 0");
loc.next = newNode;
++size;
break;
}
else if(comp==0){
System.out.println("중복숫자를 입력하였습니다.");
break;
}
else{
System.out.println("cmp < 0");
prevLoc = newNode;
newNode.next = list;
list = newNode;
++size;
break;
}
}
}
}
그리고 테스트 클래스를 만들어 테스트를 해보면
public class Test {
public static void main(String[] args) {
//LinkedList<Integer> llist = new sortedLinkedList<Integer>();
LinkedList<Integer> list = new SortedLinkedList<Integer>();
list.add(5);
list.add(3);
list.add(10);
//list.add(7);
for(Integer i: list){
System.out.println(i);
}
//System.out.println(1);
}
}
이클립스 콘솔에는 아래와 같은 값이 나오며 결과적으로 링크드리스트 출력은 3하고 10이 됩니다. 왜이렇게 계속 2개의 값만 나오는지 이해가 안됩니다
loc == null
-1
cmp < 0
1
cmp > 0
3
10
작은 도움이라도 힌트라도 도움주시면 감사하겠습니다.