자료구조 4

[자료구조] 스택 (Stack)

스택이란?스택 (Stack)이란 마지막에 들어간 자료가 가장 먼저 나오는 자료구조인데, 이를 LIFO (Last In First Out) 구조라고 말한다. 스택은 쌓는다는 의미를 갖기도 하는데, 순서대로 쌓은 것을 꺼낼 때는 역순으로 꺼낸다고 생각하면 된다. 예를 들어, 스택에 요소들을 A, B, C 순으로 저장했을 때, 꺼낼 때는 C, B, A 순으로 꺼내야 한다.  실생활에서 워드나 한글 같은 편집기에서 처리한 작업을 되돌리기 하는 경우, 가장 나중에 한 작업부터 순서대로 되돌리기 되는데, 이도 스택의 원리를 이용한 것이라고 볼 수 있다.  스택의 연산스택이라는 자료형에서의 연산은 어떻게 이루어질까? 앞서 말했듯이 스택에서는 새로운 자료를 스택에 넣는 기능과, 스택 상단에 있는 자료를 꺼내는 기능이 ..

[자료구조 in C++] 동적 배열(Vector)

자료구조에서 Vector 란? 자료구조에서 "벡터"(Vector)는 동적 배열을 의미하는데, 이는 고정된 크기를 가진 일반적인 배열과 달리 크기가 동적으로 변할 수 있는 배열이다. 이전 글에서 언급했던 array와 비슷한 개념이지만, 크기가 고정되어 있고, 메모리 할당 방법을 변경할 수 없는 array의 문제를 해결할 수 있다. 즉, vector의 경우, 원소가 추가되고 제거됨에 따라 동적으로 크기가 조정되고, 연속적으로 메모리를 할당할 수 있다. Vector 선언 방법 #include #include int main() { std::vector vec; //크기 0인 벡터 선언 std::vector vec = {1,2,3,4,5}; //지정한 초기값으로 이루어진 크기가 5인 벡터 선언 std::vect..

[자료구조 in C++] 정적 배열(Array)

배열$($Array$)$란? 배열(Array)은 자료구조의 한 형태로, 동일한 자료형의 데이터를 연속적인 메모리 공간에 순차적으로 저장하는 구조이다. 배열은 다음과 같은 특징을 가지고 있다. 고정 크기: 배열을 생성할 때, 그 크기가 정해지며, 대부분의 프로그래밍 언어에서는 배열의 크기를 변경할 수 없다 인덱스 접근: 배열의 각 요소는 인덱스(또는 위치)를 통해 접근할 수 있다. 이 인덱스는 0부터 시작하여 $($배열의 크기$)$ - 1 까지의 값을 가진다 동일한 자료형: 배열에 저장되는 모든 요소는 동일한 자료형이어야 한다. 예를 들어, 정수형 배열에는 정수만 저장할 수 있다. 자료구조에서의 Array std::array는 메모리를 자동으로 할당하고 해제한다. std::array는 원소의 타입과 배열 ..

[자료구조 in C++] 연속된 자료구조와 연결된 자료구조

자료구조의 중요성 응용 프로그램을 설계할 때 데이터 관리는 필수적 요소이다. 특히, 요즘 빅데이터 시대라고 불리는 만큼 데이터 관리는 더욱더 중요하게 고려되어야 할 항목이다. 프로그래머는 데이터를 메모리에 저장하기 위해 여러 자료 구조를 활용할 수 있다. 프로그램에서 필요한 기능을 구현하고, 동작 성능과 안정성을 확보하려면 적절한 자료구조$($Data Structure$)$ 를 선택하여야 한다. 자료구조는 크게 연속된 자료구조와 연결된 자료구조로 분류할 수 있다. 시간 복잡성$($Time Complexity$)$ 데이터를 처리하기에 앞서 데이터를 어떠한 형태로 저장할 것인가가 결정되어야 한다. 이를 결정하기 위한 적합한 지표들이 몇 가지 있는데, 대표적으로 알고리즘 복잡도 혹은 시간복잡도$($Time C..