목록자료구조 (3)
bdfgdfg
우선순위 큐 간단하게 말해서 "들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나온다" 이 우선순위의 판단 근거는 프로그래머가 결정할 일이다. 즉 목적에 맞게 우선순위를 결정하면 된다. 따로 우선순위정보를 넣어줄 수 있고, 저장할 데이터를 근거로 우선순위를 판단할 수 있다.(ex 사전순서) 우선순위 큐를 구현하는 방법은 여러가지가 될 수 있지만 순수 배열을 통한 구현을 할 시 데이터를 삽입 및 삭제하는 과정에서 데이터를 한 칸씩 뒤로 밀거나 한 칸씩 앞으로 당기는 연산을 수반해야한다. 그리고 삽입의 위치를 찾기 위해서 배열에 저장된 모든 데이터와 우선순위의 비교를 진행해야할 수 있다. -> 이 문제점은 연결리스트도 마찬가지. 그렇기에 우선순위 큐를 구현한다고 하면 '힙(heap)'이라는 자료구조를 ..
연결리스트 1. 순차 리스트 - 배열을 기반으로 구현된 리스트 (C++에서는 std::array, std::vector등 비슷한 컨테이너가 존재) 2. 연결 리스트 - 메모리의 동적 할당을 기반으로 구현된 리스트 (C++에서는 std::list) 리스트 자료구조는 데이터를 나란히(선형) 저장한다. 그리고 중복된 데이터의 저장을 막지않는다. (자료구조 중에서는 중복된 데이터의 저장을 허용하지 않는 경우도 있다. ex)이진 탐색 트리) 우선 순차 리스트를 살펴보자. (여기서부터는 C가 아닌 C++로 구현합니다.) #pragma once template class Array final { public: Array(); ~Array(); inline size_t GetSize() const; inline siz..
자료구조란? "어떻게 데이터를 표현하느냐"이다. 위에서 말하는 데이터의 표현은 데이터의 저장을 포함하는 개념이다. 이렇듯 '데이터의 저장'을 담당하는 것이 바로 자료구조. 그렇기에 우리가 언어를 공부하면서 배운 기본 자료형 int형, 구조체 혹은 배열등도 자료구조에 속한다. 하지만 흔히 자료구조라함은 이렇게 간단한 구조를 지칭하는것이 아닌 좀 더 복잡한 형태의 자료구조를 이야기한다. 자료구조의 분류 주로 공부할 내용은 선형구조(리스트,스택,큐등)와 비선형구조(트리,그래프). 자료구조와 알고리즘 자료구조가 '데이터의 표현 및 저장방법'을 뜻한다면 알고리즘은 그 자료구조의 데이터를 대상으로 하는 문제 해결방법을 뜻한다. 예를 들어보자. int arr[10] = {1,2,3,4,5,6,7,8,9,10}; 위의..