Stack, Queue 정리

여상우·2022년 8월 30일
0

Java

목록 보기
3/4

이번에는 Java 공부중에 대표적인 자료구조 Stack, Queue에 대해서 알아보려고 한다. 🤣🤣


1. Stack

Stack은 단어 그대로 '쌓다' 라는 의미에 가장 적합한 자료구조이다.
데이터가 차곡차곡 쌓이기 때문에 처음 저장된 데이터는 다른 모든 데이터들을 다 꺼내고 나서야 마지막으로 꺼낼 수 있다는 점이 특징적이다.
대신, 마지막으로 저장된 데이터는 다른 데이터들을 꺼내지 않고도 처음으로 꺼낼 수 있다는 점이 특징적이다.

이를 영어로 하면 LIFO(Last In First Out) 라고 하는데 영어 단어의 뜻을 알아두면 이해하기가 어렵지 않다.

2. Queue

Queue는 '줄줄이 연필'을 알고있다면 좀 더 쉽게 이해할 수 있는 자료구조이다.

  • 어릴때 사용했던 줄줄이 연필. 맨 뒤꽁무니에 다 쓴 연필심을 꽂아넣으면 앞으로 새 연필심이 나오는 구조이다.

데이터가 쌓이는 방향 과 데이터를 꺼내는 방향 이 서로 반대이기 때문에, 처음 저장된 데이터는 다른 데이터에 밀려나가고 있으므로 맨 처음 꺼낼 수 있다는 점이 특징적이다.
그대신 마지막으로 저장된 데이터는 다른 데이터들을 꺼낸 다음 마지막으로 꺼낼 수 있다는 점이 특징적이다.

이를 영어로 하면 FIFO(First In First Out) 라고 하는데 영어 단어의 뜻을 알아두면 이해하기가 어렵지 않다.

  • 위에서 설명했던 내용을 사진으로 표시한 것!

3. 실제 코드로 구현해보기

		Queue<Integer> que = new LinkedList<>();
		Stack<Integer> stac = new Stack<>();
        
        // 큐에 데이터 집어넣기
        que.add();   //add는 값을 집어넣고, 큐가 꽉찼을 때 error 발생
        que.offer(); //offer는 값을 집어넣고, 큐가 꽉찼을 때 false를 리턴
        // 큐에서 데이터 가져오기(with 삭제)
        que.remove(); //remove는 데이터를 확인하고 제거, 비어있을 경우 error 발생
        que.poll();   //poll은 데이터를 확인하고 제거, 비어있을 경우 null 리턴
        que.clear();  //큐 데이터 삭제(비우기)
        // 큐에서 데이터 가져오기(삭제 없이)
		que.element(); //element는 큐 제일 앞에있는 값 확인, 비어있을 경우 error 발생
        que.peek();    //peek는 큐 제일 앞에있는 값 확인, 비어있을 경우 null 리턴
       
        // 스택에 데이터 집어넣기
        stac.push();
		stac.add();
        // 스택에서 데이터 가져오기(with 삭제)
        stac.remove();
        stac.pop();
        // 스택에서 데이터 가져오기(삭제없이)
        stac.peek();

스택도 큐와 동일하게 사용되는데 add와 remove, peek, clear 정도는 공통적으로 사용이 되고, offer, poll, push, pop은 각각 특징적으로 사용이 되는것을 확인할 수 있다.


Deque도 정리해보려고 했더니 Deque도 다르지는 않지만 사용법이 조금 더 어려워서 헷갈릴까봐 일단 다음에 정리해보려고 한다🤣🤣 Deque는 Queue가 양쪽으로 있는 느낌이다!(양쪽으로 데이터를 넣고 뺄 수 있는 점이 다른점)

profile
Keep forwarding person.

0개의 댓글