Queue(by SinglyLinkedList) 구현 코드

한시삼십사분·2022년 1월 12일

자료구조 JAVA

목록 보기
11/16
post-thumbnail

Queue Interface

package Interface_form;

public interface Queue<E> {
	
	/**
	 * 
	 * @param data queue에 추가할 요소
	 * @return 정상적으로 추가되었을 때 true 반환
	 */
	boolean offer(E data);
	
	/**
	 * queue의 첫번 째 요소를 삭제하고 해당 요소를 반환
	 * @return queue의 첫번 째 요소
	 */
	E poll();
	
	/**
	 *	queue의 첫번 째 요소를 삭제하지 않고 반환
	 * @return Queue의 첫번 쨰 요소
	 */
	E peek();
}

Node class

public class Node<E> {
	E data;
	Node<E> next;
	
	public Node(E data) {
		this.data = data;
		this.next = null;
	}
}

LinkedListQueue class

import java.util.NoSuchElementException;

import Interface_form.Queue;

public class LinkedListQueue<E> implements Queue<E>{
	private Node<E> head;
	private Node<E> tail;
	
	private int size;
	
	public LinkedListQueue() {
		this.size = 0;
		this.head = null;
		this.tail = null;
	}
	
	public boolean offer(E data) {
		Node<E> newNode = new Node<E>(data);
		
		if(size == 0) {
			head = newNode;
		}
		
		else {
			tail.next = newNode;
		}
		
		tail = newNode;
		size++;
		
		return true;
	}
	
	public E poll() {
		if(size == 0) {
			return null;
		}
		E element = head.data;
		
		Node<E> nextNode = head.next;
		
		head.data = null;
		head.next = null;
		
		head = nextNode;
		size--;
		
		return element;
	}
	
	public E remove() {
		E element = poll();
		
		if(element == null) {
			throw new NoSuchElementException();
		}

		return element;
	}
	
	public E peek() {
		if(size == 0) {
			return null;
		}
		
		return head.data;
	}
	
	public E element() {
		E element = peek();
		
		if(element == null) {
			throw new NoSuchElementException();
		}
		return element;
	}
	
	public int size() {
		return size;
	}
	
	public boolean isEmpty() {
		return size() == 0;
	}
	
	public boolean contains(Object data) {
		Node<E> n = head;
		
		for(;n != null; n = n.next) {
			if(n.data.equals(data)){
				return true;
			}
		}
		return false;
	}
	
	public void clear() {
		Node<E> n = head;
		
		for(; n != null;) {
			Node<E> nextNode = n.next;
			
			n.data = null;
			n.next = null;
			
			n = nextNode;
		}
		size = 0;
		head = tail = null;
	}
}

https://st-lab.tistory.com/161?category=856997
내가 직접 코딩해보고 사이트를 확인하여 수정하는 방법으로 구현을 진행했음

profile
인간은 망각의 동물이라지만 이건 너무한 거 아니냐고

0개의 댓글