CS/자료구조

[whiteship스터디 4주차 과제]LinkedList를 이용해 Queue 구현

jjunbbang 2021. 6. 19. 11:50

큐의 FIFO 특징을 간단하게 구현했습니다.

 

  • Main 클래스
package Week4_Queue_ListNode;

public class Test {
    public static void main(String[] args) {
        Queue<Integer> queue = new Queue<>();
        for (int i = 0; i < 3; i++) {
            queue.push(i);
        }
        System.out.println("Queue Size : " + queue.size);
        queue.showItems();

        System.out.println(queue.pop().data);
        System.out.println(queue.pop().data);
        System.out.println(queue.pop().data);
        System.out.println("Queue Size : " + queue.size);
        queue.showItems();
    }
}

 

 

  • 노드 클래스
package Week4_Queue_ListNode;

public class Node<T> {
    T data;
    Node<T> next;

    Node(T data) {
        this.data = data;
        next = null;
    }
}

 

  • Queue 클래스
package Week4_Queue_ListNode;

public class Queue<T> {
    Node<T> head;
    int size;

    public void push(T data) {
        if (head == null) {
            head = new Node<>(data);
            size = 1;
            return;
        }
//      탐색에는 O(n)의 복잡도가 소요됩니다.
        Node<T> temp = head;
        for (int i = 0; i < size - 1; i++) {
            temp = temp.next;
        }
        temp.next = new Node<>(data);
        size++;
    }

    public Node<T> pop() {
        Node<T> temp = head;
        head = temp.next;
        temp.next = null;
        size --;
        return temp;
    }

    public void showItems() {
        if (head == null || size == 0) {
            System.out.println("Empty");
        }
        Node<T> temp = head;
        for (int i = 0; i < size; i++) {
            System.out.println("item" + (i + 1) + ":" + temp.data);
            temp = temp.next;
        }
    }

}