2013년 8월 13일 화요일

[자바자료구조, 오라클자바커뮤니티]연결리스트로 구현한 큐(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;
    } 

        /** return the element at the front of the queue
            * return null if the queue is empty */
    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;
    }

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);
}
}
 

댓글 없음:

댓글 쓰기