자료 구조 스프린트에 들어간다.
처음 생각했을땐 엄청 어려울꺼라고 생각했는데
지금은 아직 할만한 것 같다 내용도 이해가되고
구조가 어떻게 생겼을 지도 머리로 조금은 그려지는듯 하다.
다른 구조를 배울때도 지금같이 이해되면 좋겠다.
여러 데이터들의 묶음을 어떻게 저장하고 사용할지 정의하는 것으로 배열도 자료구조 중 하나이다. 자료 구조의 종류는 다음과 같다.
스택은 쌓여있는 접시 더미와 같이 작동한다.
새로운 접시가 쌓일 때도 맨 위에서 먼저 쌓이고,
접시를 가져갈 때도 맨 위에서 가지고 가는 것과 같다.
(LIFO: last in, first out) = (FILO: first in, last out)
배열은 이런 자료구조를 구현할 때에 사용할 수 있는데
배열에서 사용하는 연산인 push
와 pop
이 바로
스택의 연산이다.
pop()
스택의 가장 윗 데이터를 삭제한다.
위치는 포인터(Linked List)/인덱스(Array)에 의해 지정된다.
push()
요소를 스택에 넣는다(삽입저장)
위치는 포인터(Linked List)/인덱스(Array)에 의해 지정된다.
peek()
스택의 가장 윗 데이터를 삭제하지 않고
데이터를 가져온다.
isEmpty()
스택이 비어있는지 확인한다.
isFull()
스택이 차있는지 확인한다.
Array를 사용할 때의 스택
top(데이터 삽입/삭제하는 위치)-(index)
maxSize(배열의 최대 크기)
stackArray(배열)
큐는 놀이공원에서 서는 줄과 같이 작동한다.
사람들이 맨 끝에 줄을 서고, 맨 앞에서부터
놀이기구에 탑승하는 것과 같다.
(FIFO: first in, first out)
마찬가지로 배열을 이용해 큐를 구현할 때 사용할 수 있다.
배열에서 사용하는 연산인 push
와 shift
가
큐의 연산이다.
enqueue()
큐의 가장 뒤에 데이터를 넣는다
dequeue()
큐의 가장 앞쪽의 데이터를 추출한다
peek()
큐의 가장 앞의 데이터를 삭제하지 않고,
데이터를 가져온다.
isEmpty()
큐가 비어있는지 확인한다.
Array를 사용할때의 큐
front() (배열의 가장 앞의 값)
rear() (배열의 가장 뒤의 값)
size() (배열의 길이)
arr(Queue) (배열)