CS - 자료구조(2)

wlsdnboy·2022년 2월 21일
0

스택과 큐

오늘은 스택과 큐에 대해서 알아보자.

스택이란?

데이터를 쌓아올린 형태의 자료구조이다. 가장 마지막에 들어간 자료가 가장 먼저 나온다
후입선출(LIFO, Last In First Out)의 구조라고 한다.

스택의 특징

  • 스택은 같은 구조와 크기의 데이터를 정해진 방향으로만 쌓을 수 있다.
  • top으로 지정된 곳을 통해서만 접근할 수 있다.
  • 삽입과 삭제도 top을 통해서만 가능하다.
  • 삽입 연산을 PUSH, 삭제 연산을 POP이라고 한다.

스택의 활용 예시

  • 웹브라우저 뒤로가기

스택의 사용법

import java.util.Stack;

public class Main {

	public static void main(String[] args) {

		Stack<Integer> stack = new Stack<>(); // 스택의 선언
		stack.push(1);  
		stack.push(2);
		stack.push(3);// 스택의 3을 대입
        stack.pop(); // 스택의 가장 나중에 대입한 값 삭제
		stack.peek(); // 상단의 값 출력
        stack.size(); //스택의 크기 출력
        stack.clear(); //스택의 전체 값 삭제
        stack.isEmpty(); // 스택이 비어있는지 비어있다면 true 출력
        stack.contains(1); // 스택에 1이 포함되어 있는지 있다면 true 출력
         
         
	}

}

큐란?

먼저 들어온 것이 먼저 나가는 선입선출(FIFO, First in first out) 구조를 갖는다.

큐의 특징

  • 큐와 다르게 한쪽 끝에서 삽입이 다른 한쪽 끝에서는 삭제가 된다
  • 삽입 연산이 되는곳을 리어(rear)라고 한다.
  • 삭제 연산이 되는곳을 프론트(front)라고 한다.
  • 리어에서 실행되는 삽입 연산을 인큐라고 한다.
  • 프론트에서 실행되는 삭제 연산을 디큐라고 한다.

큐의 활용 예시

  • 은행 업무
  • 콜센터 고객 대기 시간
  • 우선순위와 같은 작업 예약

큐의 사용법

Queue<Integer> queue = new LinkedList<>();
          queue.offer(1); //주어진 객체 삽입 성공시 true 실패시 false
          queue.add(2); // 주어진 객체 삽입 성공시 true 실패시 Exception
          
          System.out.println(queue.peek()); // 큐의 head 리턴 비었다면 null 반환
          System.out.println(queue.element()); // 큐의 head 리턴 비었다면 Exception
          
          System.out.println(queue.poll()); 
          System.out.println(queue.poll());
          System.out.println(queue.poll()); //front에 위치한 객체 리턴 후 제거 큐가 비었다면 null
          System.out.println(queue.remove(1)); // 특정 객체 제거 큐가 비었다면 null
          
profile
초보 개발자

0개의 댓글