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 메소드 만들기
public void add(T item){
Node<T> t = new Node<T>(item):
}
if(last != null){
last.next = t;
}
last = t;
if(first == null) {
first = last;
}
}
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 값을 반환한다.
마지막 실행해보기!