[자료구조] Queue구현하기: (JAVA)

ho's·2022년 4월 20일
0
post-thumbnail
post-custom-banner

Queue는 First In First Out으로 FIFO라고 부른다.

Queue를 구성하는 함수는
add() : 맨 끝에다가 data를 넣는것
remove() : 맨 앞에서 data를 꺼내는 것
peek() : 맨 앞에 있는 data 보는 것
isEmpty : Queue가 비어있나 확인 하는 것

코드로 구현을 해보자!

1. Queue 클래스 생성

  • Queue클래스의 data 타입은 T이다.

  • T타입의 변수명 data를 선언

  • 다음 Node 선언

public Node(T data){
 	this.data = data;
}

생성자를 만들어 Node클래스에 들어오는 data를 내부 변수에 저장한다.

private Node<T> first;
private Node<T> last; 

Queue는 첫번째와 마지막을 알아야 하므로 T타입의 변수 first, last를 생성

2. add 메소드 만들기

  • add 메소드 생성
public void add(T item){
	Node<T> t = new Node<T>(item):
}
  • T타입의 item을 받아서 노드를 생성한다.
if(last != null){
	last.next = t;
}
last = t;
if(first == null) {
	first = last;
	}
}
  • 만약 마지막이 비어있지 않다면, t의 값은 마지막node의 다음으로 정한다.
    그리고 t의 값을 last에 넣어준다.
  • 만약 first가 비어있다면, 마지막node를 first노드에 넣어준다.

3. remove() 메소드 만들기

반환 타입이 T인 remove 메소드를 만들자.

if(first == null){
	throw new NoSuchElementException();
}

만약에 첫번째가 비어있다면 제거할게 없으므로 예외처리를 해준다.

T data = first.data
first = first.next

T타입의 변수명 data에 first.data를 담는다.
firset.next를 first에 담는다.

if(first == null){
	last = null
}

만약 첫번째가 비어있다면, 마지막도 비어있으니 last = null;로 채워주자

맨 앞에있는 data를 반환하기 전에, 그 다음 주소에 있는 애를 first로 만들어 주자.

 return data;

data를 반환한다.

4. peek메소드 만들기

public T peek(){
}

public한 필드,
반환 값은 T 타입
메소드 이름은 peek

if(first==null){
	throw new NoSuchElementException();
}else 
return first.data;

first가 null이면 예외처리
null이 아니면 첫번째 data를 return한다.

5. isEmpty 메소드 만들기

필드는 public 하다.
return 타입은 boolean형이다.
메소드의 이름은 isEmpty이다.
isEmpty()가 호출되면, first == null; 인지 false/true 값을 반환한다.

마지막 실행해보기!

profile
그래야만 한다
post-custom-banner

0개의 댓글