Stack, Queue, Linked List란?
*Stack
: 한쪽 끝에서만 데이터를 넣고 뺄 수 있는 구조
(즉, 출구와 입구가 같은 구조)
: 나중에 넣은 데이터가 먼저 처음에 넣은 데이터가 나중에 나오는 구조
(LIFO - Last In First Out)
: 접시를 쌓거나 책을 쌓을때 등과 같음
-method
: top(데이터 삽입 및 삭제하는 위치)
: peek(데이터 위치 탐색)
: top(스택의 맨 위에 있는 데이터 값을 반환)
: push(스택에 데이터를 삽입)
: pop(스택에서 데이터를 삭제하여 삭제한 값을 반환)
: isempty(스택에 원소 유무 판단 - 없으면 ‘true’, 있으면 ‘false’ 값 반환)
: isfull(isempty와 반대)
*Queue
: 데이터가 들어가는 쪽과 나오는 쪽이 반대인 구조
(즉, 출구와 입구가 다른 구조)
: 먼저 넣은 데이터가 먼저 나중에 넣은 데이터가 나중에 나오는 구조
(stack과 반대, FIFO - First In First Out)
: 놀이공원 입장이나 영화관 입장 등과 같음
-method
: peek(front에 위치한 데이터를 읽음)
: head(큐의 맨 앞의 위치)
: tail(큐의 맨 뒤의 위치)
: enqueue(queue 맨 뒤에 데이터를 삽입, put)
: dequeue(queue 맨 앞에 데이터를 삭제, get)
*Linked List
: 엘리먼트와 엘리먼트 간을 연결해서 리스트를 구현한 구조
(즉, 각 데이터를 포인터로 연결하여 관리하는 구조 )
: 데이터를 중간에 삽입 및 삭제하기에 용이한 구조
(자료의 수정이 많이 발생할 때 처리 속도가 빠름)
: 원하는 데이터를 찾기 위해선 처음부터 찾아가야하는 구조
(stack, queue보다 데이터를 찾기엔 불편)
: 메모리 공간을 절약가능
: 화물열차처럼 칸마다 자료가 들어가 있고, 열차 칸을 서로 연결해주는 연결 고리가 있는 형태
-method
: head(맨 앞에 위치한 노드)
: before(현재 위치 전의 노드)
: current(현재 위치 노드)
: tail(맨 뒤에 위치한 노드)
: append(리스트의 맨 끝에 데이터 추가)
: remove(데이터 삭제)
: insert(데이터 삽입)