스택, 큐

jiyoon·2022년 11월 21일
2
post-thumbnail

Stack

1. LIFO (Last In First Out)

  1. 먼저 들어간 데이터가 제일 나중에 나옴. 후입선출

  2. 데이터는 하나씩 넣고 뺀다

  • 한꺼번에 여러개를 넣고 뺄수 없다
  1. 하나의 입출력 방향을 가진다
  • 입출력 방향이 여러 개라면 Stack 자료 구조 X
  1. Stack에 데이터를 넣는 것은 'PUSH', 데이터를 꺼내는 것은 'POP'이라고 한다.

실사용 예제

  • 브라우저 앞, 뒤로 가기

브라우저에서 자료구조 Stack이 사용될 때

  1. 새로운 페이지로 접속할 때, 현재 페이지를 Prev Stack에 보관.
  1. 뒤로 가기 버튼을 눌러 이전 페이지로 돌아갈 때에는, 현재 페이지를 Next Stack에 보관하고 Prev Stack에 가장 나중에 보관된 페이지를 현재 페이지로 가져온다.
  1. 앞으로 가기 버튼을 눌러 앞서 방문한 페이지로 이동을 원할 때에는, Next Stack의 가장 마지막으로 보관된 페이지를 가져온다.
  1. 마지막으로 현재 페이지를 Prev Stack에 보관.

Stack 선언

Stack<Integer> stack = new Stack<>(); // int 형 스택
Stack<String> stack = new Stack<>(); // char형 스택

Stack 값 추가, 삭제 등

1. push(A)

  • 스택에 데이터 A 추가
  • push는 Exception 리턴

2. add(A)

  • 스택에 데이터 A 추가
  • add는 boolean형 리턴

3. peek()

  • 스택에서 top에 있는 데이터 반환

4. pop()

  • 스택에서 맨 위에 있는 데이터를 꺼내온다

5. size()

  • 스택 크기

4. Empty()

  • 비었는지 여부

5. remove()

  • 스택 값 제거
  1. search(A)
  • 스택에서 A가 있는 인덱스 위치를 반환

Queue

1. FIFO (First In First Out)

  1. 먼저 들어간 데이터가 제일 먼저 나오는 선입선출의 구조

  2. 데이터는 하나씩 넣고 뺄수 있다.

  • 한꺼번에 여러 개를 넣거나 뺄수 없다.
  1. 두 개의 입출력 방향을 가진다.

실사용 예제

  • 프린터에서 여러 문서를 순서대로 인쇄 할 때

프린터에서 자료구조 Queue

  1. 문서를 작성하고 출력 버튼을 누르면 해당 문서는 인쇄 작업 (임시 기억 장치의) Queue에 들어간다.

  2. 프린터는 인쇄 작업 Queue에 들어온 문서를 순서대로 인쇄.


Queue 선언 (Integer형)

Queue<Integer> q = new LinkedList<>();

Queue에 값 추가, 삭제 등

1. add()

  • 삽입 성공 시 true 반환, 하지만 사용 가능한 공간이 없어 삽입 실패 시 IllegalStateException 발생

2. remove()

  • 앞에 있는 데이터 반환 후 삭제

  • 큐가 비어 있는 경우 NoSuchElementException 에러 발생

3. peek()

  • 앞에 있는 데이터를 반환

  • 비어있을 경우 null 반환

4. isEmpty()

  • 큐가 비어있는 확인한다.

  • 비어 있을 경우 null 반환

5. poll()

  • 앞에 있는 데이터 반환 후 삭제

  • 비어 있을 경우 null 반환

profile
한걸음 나아가는 개발자

0개의 댓글