TIL Stack & Queue

백광호·2021년 1월 19일
0

TIL

목록 보기
37/55

코드스테이츠 44일차

자료 구조 스프린트에 들어간다.
처음 생각했을땐 엄청 어려울꺼라고 생각했는데
지금은 아직 할만한 것 같다 내용도 이해가되고
구조가 어떻게 생겼을 지도 머리로 조금은 그려지는듯 하다.

다른 구조를 배울때도 지금같이 이해되면 좋겠다.

새로 배운 것들

여러 데이터들의 묶음을 어떻게 저장하고 사용할지 정의하는 것으로 배열도 자료구조 중 하나이다. 자료 구조의 종류는 다음과 같다.

  • Stack(스택)
  • Queue(큐)
  • Linked List(연결 리스트)
  • Hash Table(해시 테이블)
  • Graph(그래프)
  • Tree(트리)
  • BST(이진 탐색 트리)
  • Time Complexity(시간 복잡도)

Stack(스택)

스택은 쌓여있는 접시 더미와 같이 작동한다.
새로운 접시가 쌓일 때도 맨 위에서 먼저 쌓이고,
접시를 가져갈 때도 맨 위에서 가지고 가는 것과 같다.
(LIFO: last in, first out) = (FILO: first in, last out)

배열은 이런 자료구조를 구현할 때에 사용할 수 있는데
배열에서 사용하는 연산인 pushpop이 바로
스택의 연산이다.

  • 스택의 주요 메소드

pop()

스택의 가장 윗 데이터를 삭제한다.
위치는 포인터(Linked List)/인덱스(Array)에 의해 지정된다.

push()

요소를 스택에 넣는다(삽입저장)
위치는 포인터(Linked List)/인덱스(Array)에 의해 지정된다.

peek()

스택의 가장 윗 데이터를 삭제하지 않고
데이터를 가져온다.

isEmpty()

스택이 비어있는지 확인한다.

isFull()

스택이 차있는지 확인한다.

  • 스택의 속성

Array를 사용할 때의 스택

top(데이터 삽입/삭제하는 위치)-(index)
maxSize(배열의 최대 크기)
stackArray(배열)

Queue(큐)

큐는 놀이공원에서 서는 줄과 같이 작동한다.
사람들이 맨 끝에 줄을 서고, 맨 앞에서부터
놀이기구에 탑승하는 것과 같다.
(FIFO: first in, first out)

마찬가지로 배열을 이용해 큐를 구현할 때 사용할 수 있다.
배열에서 사용하는 연산인 pushshift
큐의 연산이다.

  • 큐의 주요 메소드

enqueue()

큐의 가장 뒤에 데이터를 넣는다

dequeue()

큐의 가장 앞쪽의 데이터를 추출한다

peek()

큐의 가장 앞의 데이터를 삭제하지 않고,
데이터를 가져온다.

isEmpty()

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

  • 큐의 속성

Array를 사용할때의 큐

front() (배열의 가장 앞의 값)
rear() (배열의 가장 뒤의 값)
size() (배열의 길이)
arr(Queue) (배열)

알아둬야할 것들

  • Linked List(연결 리스트)
  • Hash Table(해시 테이블)
  • Graph(그래프)
  • Tree(트리)
  • BST(이진 탐색 트리)
  • Time Complexity(시간 복잡도)
profile
안녕하세요

0개의 댓글