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