JAVA double linked list

Reference:최종명 외 2인,프로그래머를 위한 JAVA2 4E,홍릉출판사


ElementNode.java



  1.  import java.util.*;
  2.  public class ElementNode<T extends Comparable>{
  3.     public ElementNode<T> next,previous;
  4.     private T value;
  5.    
  6.     public ElementNode(T v){
  7.         value = v;
  8.     }
  9.     public ElementNode left(){
  10.         return previous;
  11.     }
  12.     public void left(ElementNode<T> l){
  13.         previous=l;
  14.     }
  15.     public ElementNode right(){
  16.         return next;
  17.        
  18.     }
  19.     public void right(ElementNode<T> r){
  20.         next=r;
  21.     }
  22.     public T getValue(){
  23.         return value;
  24.     }
  25.     public void setValue(T v){
  26.         value=v;
  27.     }
  28.  }

ToDoList.java


 :더블 링크드 리스트를 이용한 todolist
  1. public class ToDoList {
  2.     private String date;
  3.     private ElementNode<String> todos;
  4.     
  5.     public ToDoList(String date){
  6.         this.date=date;
  7.     }
  8.    
  9.     public void add(String job){
  10.         if(todos==null){
  11.             todos=new ElementNode<String>(job);
  12.         }else{
  13.             ElementNode<String> temp = todos;
  14.             while(temp.next != null){
  15.                 temp=temp.next;
  16.             }//최 우측까지 next를 진행시킨다.
  17.             ElementNode<String> temp2=new ElementNode<String>(job);
  18.             //Node connecting.
  19.             temp.next=temp2;
  20.             temp2.previous=temp;
  21.         }
  22.     }
  23.     public void delete(String job){
  24.         ElementNode<String> temp=todos;
  25.         while(temp != null){
  26.             if(temp.getValue().equals(job)){
  27.                 ElementNode<String> prev=temp.previous;
  28.                 if(prev == null){
  29.                     //job이 포함된 노드를 제외하고 연결
  30.                     todos=temp.next;
  31.                     todos.previous=null;
  32.                 }else{
  33.                     prev.next=temp.next;
  34.                     temp.next.previous=prev;
  35.                 }
  36.                 break;
  37.             }else{
  38.                 //todos가 null이면 next는 자기자신을 지칭하게한다.
  39.                 temp=temp.next;
  40.             }
  41.         }
  42.     }
  43.     public String toString(){
  44.         StringBuffer buf=new StringBuffer();
  45.         buf.append(date+"일 할일 ");
  46.         ElementNode<String> temp = todos;
  47.         while(temp != null){
  48.             String v=temp.getValue();
  49.             buf.append(v);
  50.             buf.append(" ");
  51.             temp=temp.next//다음노드로 진행
  52.         }
  53.         return buf.toString();
  54.     }
  55.     public static void main(String args[]){
  56.         ToDoList list = new ToDoList("2011/2/9");
  57.         list.add("토익 RC공부하기");
  58.         list.add("토익 voca공부하기");
  59.         list.add("토익 LC공부하기");
  60.         System.out.println(list);
  61.         list.delete("토익 voca공부하기");
  62.         System.out.println("--------------------");
  63.         System.out.println(list);
  64.     }
  65. }

댓글

이 블로그의 인기 게시물

[Win32 API] WINAPI - 함수호출규약

JAVA Frame Icon setting

JAVA Spinner