Study Fundamental/Data Structure 9

큐와 덱(Queue-and-Deque)

큐(Queue)란? 스택이 나중에 들어온 데이터가 먼저 나가는 구조인데 반해서 큐(Queue)는 먼저 들어온 데이터가 먼저 나가는 자료구조이다. 이러한 특성을 선입선출(FIFO: First In First Out)이라고 한다. 큐의 대표적인 예 : 은행에서 서비스를 기다리는 고객들이나 매표소에서 표를 사기 위해 기다리는 사람들이 한 줄로 늘어선 열 큐는 뒤에서 새로운 데이터가 추가되고 앞에서 데이터가 하나씩 삭제되는 구조를 가지고 있다. 구조상으로 큐가 스택과 다른 점은 스택에서 삽입과 삭제가 같은 쪽에서 일어 났지만 큐에서는 다른 쪽에서 일어난다는 것이다. 큐의 추상 자료형 큐에 저장하는 자료에도 특별한 제한이 없다. 큐의 연산들도 스택과 매우 유사하다. 큐의 추상 자료형을 정의 하면 다음과 같다. 객..

스택

일상생활을 하거나 게임을 할때 가끔가다가 '스택을 쌓는다.' 또는 '스택이 쌓였다.'라는 말을 하거나 듣는 경우가 종종 있다. 이 '스택'이라는 것은 무엇으로부터 나왔으며 정확한 개념이 무엇인지 알아보겠다. 스택이란? 스택(stack)은 가장 간단한 형태의 자료구조 중하나로, 후입선출(LIFO: Last In First Out)의 형태로 일어난다. 스택은 가장 먼저 입력된 데이터가 맨 아래로 쌓이고 가장 최근에 입력된 데이터가 가장 위에 쌓이는 구조를 가지고 있다. 스택에서의 입출력은 맨 위에서만 일어나고 스택의 중간에서는 데이터를 삽입하거나 삭제할 수 없다. 스택의 구조 - 요소(element): 스택에 저장되는 것 - 공백(empty)상태: 스택에 요소가 하나도 없는 경우 - 포화(full)상태: 스..

배열 / Array

배열의 개념 배열(array)은 거의 모든 프로그래밍 언어에서 기본적으로 지원된다. 배열은 기본이 되는 중요한 자료형으로 많은 고급 자료구조들에서 사용된다. 배열은 주로 여러 개의 동일한 자료형의 데이터를 한꺼번에 만들 때 사용된다. int a1, a2, a3, a4, a5; // 6개의 정수형 변수를 각각 선언 int A[5]; // 5개의 정수형 변수를 선언 여러개의 변수를 사용하는 것은 각각을 다른 이름으로 접근해야 하므로 연산이나 자료의 교환 등에서 많은 불편함이 따른다. 이런 경우에 배열을 사용하면 편리하다. 배열은 동일한 이름을 사용하고 인덱스(index) 번호로 각 항목을 접근할 수 있다. 특히 반복문을 활용하여 코드의 길이를 크게 줄일 수 있다. 배열의 가장 기본적인 특징은 쌍의 집합이라는..