c++33 20210806 Heap정렬, Quick정렬 안녕하세요 틴구입니다. 오늘은 Heap정렬이랑 Quick정렬에 대해서 설명드리겠습니다! Heap정렬 우선 Heap정렬은 이진트리를 베이스로하는 정렬 알고리즘입니다. 그래서 트리에 대한 구조를 이해할 수 있어야하고 이진트리를 이해할 수 있어야 합니다. Heap정렬에는 최대힙과 최소힙으로 나뉘는데 최대힙이란 모든 자료에서 부모노드의 값이 자식노드보다 큰 구조를 의미합니다. 여기서 중요한건 반드시 완전이진트리 구조가 전제가 되어야 합니다. 최대힙은 내림차순 정렬이 됩니다. 최소힙은 부모노드의 값이 자식노드보다 작은 경우를 의미하고 최소힙은 오름차순 정렬이 됩니다. 코드구성 그럼 힙정렬을 구성하는 코드를 만들어 볼게요. 우선 헤더파일에 추가 - 클래스 - 인라인으로 Heap.h를 만들어줍니다. static bo.. c++/자료구조 2021. 8. 8. 20210805 자가균형 이진트리 AVLTree 안녕하세요 틴구입니다. 오늘은 자가 균형 이진트리에 대해서 적어볼까 합니다!! 자가 균형 이진트리란 각 트리의 밸런스를 맞춰주는 알고리즘이란 것을 이용해서 균형을 맞춰주는 이진트리입니다 우선 균형을 맞추는 Revalance 함수를 만들기 전에 균형을 맞출 때 필요한 함수들을 만들어줍니다. 저가 여태까지 해당코드를 비쥬얼 스튜디오에서 코드 타이핑하고 분석하고 주석 달고 복붙을 한 것인데 복습하거나 찾아보려고 할 때 너무 알아보기 힘들기도 하고 해서 이제부터 코드 분석한 내용을 포토샵으로 편집해서 올리겠습니다!! 주석의 경우 선생님이 써 주신 주석 + 저가 나머지 코드 분석한 주석입니다. GetHeight는 인자로 노드값을 넣어 해당 노드의 좌 우측 높이를 알아내는 함수입니다. 삼항연산에 의해서 Height.. c++/자료구조 2021. 8. 6. 20210804 이진 트리 순회, erase 안녕하세요 틴구입니다 오늘은 어제배운 이진트리에서 erase에 관한 녀석들을 적어보도록 할게요 우선 순회라는 녀석에 대해서 설명해드리도록 하겠습니다 이진트리는 3가지의 순회방법이 있습니다 이진트리 순회방법 전위순회, 중위순회, 후위순회 전위순회 : Root -> Left -> Right 의 순서로 구성되어 있고 중위순회 : Left -> Root -> Right 의 순서로 구성되어 있고 후위순회 : Left -> Right -> Root 의 순서로 구서되어 있습니다. (어제의 코드에서 이어짐) public: void PreOrder(void(*pFunc)(const KEY&, const VALUE&)) { PreOrder(pFunc, m_Root); } void InOrder(void(*pFunc)(co.. c++/자료구조 2021. 8. 5. 20210803 이진 트리 (재귀 함수 활용) 안녕하세요 틴구입니다! 오늘은 이진 트리에 대해서 알아보도록 합시다!! 이진트리 정의 이진트리란 각각의 노드가 최대 두 개의 자식 노드를 가지는 트리 자료 구조로, 자식 노드를 각각 왼쪽 자식 노드와 오른쪽 자식 노드라고 합니다. 이진트리는 탐색하는데에 있어서 최적화 되어있다고 합니다. 정확한 이진 트리의 정의는 위키백과 주소 달아놓을게요! https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A7%84_%ED%8A%B8%EB%A6%AC 이진 트리 - 위키백과, 우리 모두의 백과사전 크기가 9이고, 높이가 3인 이진 트리 컴퓨터 과학에서, 이진 트리(二進-, 영어: binary tree)는 각각의 노드가 최대 두 개의 자식 노드를 가지는 트리 자료 구조로, 자식 노드를 각각 왼쪽 .. c++/자료구조 2021. 8. 4. 20210802 Stack, Queue, CircleQueue 안녕하세요 틴구입니다! 오늘은 링크드에 이어서 Stack, Queue, CirlceQueue에 대해서 알아보도록 할게요. 먼저 Stack부터 알아볼까요? Stack // Stack.h (인라인으로 생성해준다.) #pragma once #include template class CStackNode { // CStack에서 CStackNode의 private을 이용하기 위해 friend를 해준다. template friend class CStack; private: CStackNode() : m_Next(nullptr) { } ~CStackNode() { } private: CStackNode* m_Next; T m_Data; }; template class CStack { public: CStack() {.. c++/자료구조 2021. 8. 3. 20210730 자료구조 erase ~ 정렬, Array class 안녕하세요 틴구입니다 오늘은 자료구조 링크드 리스트에 이어서 erase, 정렬에 대해서 알아보도록 할게요. 어제와 똑같은 파일에서 추가하는 형식으로 해보도록 하겠습니다. 어제와 오늘의 코드 굵기와 구분선을 넣도록 하겠습니다.(맨 아래쪽에 있음) 어제 / 오늘 erase / 정렬 List.h #pragma once #include // friend : 아래처럼 Listnode에 List를 friend로 지정하면 List에서는 ListNode의 // private에 접근할 수 있다. template class CListNode { template friend class CList; template friend class CListIterator; private: CListNode() : m_Next(null.. c++/자료구조 2021. 8. 1. 20210729 자료구조 안녕하세요 틴구입니다 오늘은 자료구조에 대해서 설명해드릴거에요 우선 자료구조는 데이터를 관리하는 방법입니다 자료구조의 종류는 엄청 많은데 그중에서 배열처럼 사용하는 링크드 리스트에대한 코드와 분석을 해보겠습니다 우선 Clist라는 헤더파일을 선언과 구현을 인라인으로 합쳐서 만들어줍니다. 헤더파일 - List.h #pragma once #include // friend : 아래처럼 Listnode에 List를 friend로 지정하면 List에서는 ListNode의 // private에 접근할 수 있다. template class CListNode { // CList에서 CListNode에 접근하기위해 friend를 사용한다 template friend class CList; template friend c.. c++/자료구조 2021. 7. 30. 20210726~28 class TextRPG 안녕하세요 틴구입니다! 오늘은 3일동안 배운 TextRPG를 올려놓고 두고두고 보려고합니다! 코드가 길어가지고 따로 내용을 다루기는 힘들거 같고 파일을 올리도록 하겠습니다. c++ 2021. 7. 29. 20210723 사용자 정의 헤더 파일 ~ Template 안녕하세요 틴구입니다. 오늘은 어떤걸 써볼것이냐! 사용자 정의 헤더파일 부터 class를 구현과 선언을 나뉘어 작성하는법, Template까지 작성해보도록 할게요. 우선 사용자 정의 헤더파일부터 볼까요 사용자 정의 헤더파일 우선 사용자 정의 헤더파일이란 본인이 원하는 코드를 헤더파일에 작성 후 #include로 갖고와 사용하는 방식이다 헤더 파일 우클릭 - 추가 - 새항목 - 헤더 파일 - 원하는 파일명(GameInfo)을 만들면 헤더 파일에 GameInfo.h로 헤더 파일이 생성되는데 예전에 메인 함수에서 쓰던 #include #include 를 새로 만든 GameInfo.h에 작성을 해 준다음 main.cpp 파일에서 #include "GamInfo.h" 로 불러오면 iostream, tim.h를 사.. c++ 2021. 7. 25. 20210722 객체 지향 프로그래밍 ~ static멤버함수,싱글톤 안녕하세요 틴구입니다 다시 돌아왔어요 오늘도 이론에 대한 내용인데 진짜 처음 접하는 입장에서 엄청 어려운거 같아요 계속 읽어보고 타이핑해보고 해야겠어요 그럼 바로 들어가볼까요 객체지향 프로그래밍 객체지향 프로그래밍을 설명하기 앞서 절차지향 프로그래밍 부터 설명 드릴게요 절차지향 프로그래밍이란 c언어를 말하며 순차적으로 처리해주는 프로그래밍 기법입니다. 절차지향 프로그래밍은 컴퓨터와 유사하여 실행 속도가 빠르나 유지보수가 어렵습니다. 객체지향 프로그래밍이란 객체(모든 사물)를 제작하여 객체들을 조립하여 하나의 완성된 프로그램을 만들어나가는 방식을 말합니다. C++에서는 객체지향 프로그래밍을 지원하기 위한 수단으로 클래스를 제공합니다. 객체지향 프로그래밍 같은 경우에 크게 4가지의 속성이 있습니다 객체지향 .. c++ 2021. 7. 23. 20210721 함수 ~ 오퍼레이 안녕하세요 틴구입니다 오늘은 함수 세부적인 내용이랑 오퍼레이터에까지의 내용을 담아보려고 합니다!! 갈수록 뇌가 과부하하는 거 같은 기분이네요 아직 2주밖에 안됐는데 ㅋㅋㅋㅋㅋㅋㅋ 그래도 한 번 끝까지 해보자구요!! 살아남아야지 바로 들어가볼까요~ 우선 함수도 주소가 존재하기 때문에 해당 함수의 주소를 받아놓을 함수 포인터 변수를 선언하고 주소를 알고 있다면 함수 포인터 변수를 이용해서 해당 함수를 호출할 수 있습니다! 형태로는 반환타입 (*포인터명)(인자타입들);의 형태로 선언이 됩니다. 한번 예로 들어볼까요 #include ex) void Output() { std::cout c++ 2021. 7. 21. 20210720 쌤 빙고 코드 분석 ~ 함수의 나머지 부분 안녕하세요 틴구입니다. 오늘은 저번에 내주신 함수를 이용한 빙고 과제를 선생님께서 직접 만든 코드를 분석해보는 시간을 갖도록 해봅시다. #include #include // 빙고판 숫자 1 ~ 25출력 void SetNumber(int* pArray) { for (int i = 0; i c++ 2021. 7. 21. 이전 1 2 3 다음