스택은 데이터를 임시 저장
할 때 사용하는 자료구조로, 데이터의 입출력 순서는 후입선출(FILO)
방식이다.
데이터를 제한적으로 접근할 수 있는 구조이고, 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조이다.
스택은 콜 스택이라 하여 컴퓨터 프로그램의 서브루틴에 대한 정보를 저장하는 자료구조에도 널리 활용된다. 컴파일러가 출력하는 에러도 스택처럼 맨 마지막 에러가 가장 먼저 출력되는 순서를 보인다.
또한 스택은 메모리 영역에서 LIFO 형태로 할당하고 접근하는 구조인 아키텍처 레벨의 하드웨어 스택의 이름으로도 널리 사용된다. 이외에도 꽉 찬 스택에 요소를 삽입하고자 할 때 스택에 요소가 넘쳐서 에러가 발생하는 것을 스택 버퍼 오버 플로 (stack buffer overflow)
라고 부른다. 질의응답 서비스 사이트인 스택오버플로의 명칭도 여기서 유래했다고 ,,,
스택은 거의 모든 애플리케이션을 만들 때 사용되는 자료구조로서, 스택과 연관된 알고리즘을 제대로 이해하느냐 못하느냐에 따라 기본 알고리즘을 설계할 수 있느냐 없느냐가 결정되기도 한다.
장점
단점 (일반적인 스택 구현 시)
스택의 경우 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현하는 것이 일반적이다.
이 경우, 위에서 열거한 단점이 있을 수 있다.
선형리스트는 일정한 순서에 의해 나열된 자료 구조이다.
밀도가 1
로서 가장 좋다.여기서 밀도가 1 이란?
연속 리스트의 기억장소 이용 효율을 이렇게 표현한 것은 연속 리스트는 기억장소를 연속적으로 배정받아 데이터를 기억하므로 배정된 기억장소를 빈 공간없이 꽉 차게 사용한다는 의미 !
- 연속 리스트는 중간에 데이터를 삽입하기 위해서는 연속된 빈 공간이 있어야 하며, 삽입/삭제 시 자료의 이동이 필요하다.
노드
의 포인터 부분을 이용하여 서로 연결시킨 자료구조이다.노드 란?
자료를 저장하는 데이터 부분과 다음 노드를 가리키는 포인터인 링크 부분으로 구성된 기억 공간이다.
Data부분 | Link 부분 으로 나뉨
장점
단점
기억 공간의 이용 효율
이 좋지 않다.큐는 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조이다.
선입선출(FIFO; First In First Out)
방식으로 처리한다.작업 스케줄링
에 사용한다.