2013년 8월 5일 월요일

Java Linked Queue

선형 큐 예제 입니다.


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의) 




interface Queue2  {  
   public boolean isEmpty();
   public Object getFrontElement();
   public Object getRearElement();
   public void put(Object theObject);
   public Object remove();
}
class ChainNode  {           
   Object element;
   ChainNode next;

ChainNode() {}    
   ChainNode(Object element)
  {this.element = element;}
  ChainNode(Object element, ChainNode next)
  {this.element = element;   this.next = next;}
   
 }
class LinkedQueue implements Queue2    {
  protected ChainNode front;
  protected ChainNode rear;
 
     public LinkedQueue()  {                   
   // the default initial value of front is null
  }
 public boolean isEmpty()  {
     return front == null;
    } 
        
    public Object getFrontElement()  {
        if (isEmpty())    return null;
        else                  return front.element;
    }

public Object getRearElement()  {
         if (isEmpty())   return null;
         else                 return rear.element;
    } 
 public void put(Object theElement) {
  // create a node for theElement
  ChainNode p = new ChainNode(theElement, null);
  // append p to the chain
  if (front == null)
     front = p;                 // empty queue
  else
     rear.next = p;             // nonempty queue
  rear = p;  //최초인 경우 f,r이 null이 아니면서 같다.
    }
public Object remove()  {
    if (isEmpty())  return null;
    Object frontElement = front.element;
    front = front.next;
    if (isEmpty())
      rear = null;  // enable garbage collection
   return frontElement;
    }

 public String toString() {
  StringBuffer sb = new StringBuffer("[");
  ChainNode p = front; 
 
 do {
   if (p.element == null) sb.append("null");
   else sb.append(" " + p.element.toString());
   p = p.next;   
   if (p != null) sb.append(",");
      } while (p != null);
 
   sb.append(" ]");
   return sb.toString();
 }
 }
public class LinkedQueueTest{
 public static void main (String[] args) {

  LinkedQueue q = new LinkedQueue();
  q.put(new String("aaaa"));
  q.put(new String("bbbb"));
  q.put(new String("cccc"));
  System.out.println("a,b,c 삽입후...");
  System.out.println("front : " + q.getFrontElement());
  System.out.println("rear  : " + q.getRearElement());
  System.out.println(q);
  q.remove();
  System.out.println("aaaa 삭제후...");
  System.out.println("front : " + q.getFrontElement());
  System.out.println("rear  : " + q.getRearElement());
  System.out.println(q);
 }
}
 
 

댓글 없음:

댓글 쓰기