본문 바로가기

C++33

[자료구조]2진 트리 / 힙 정렬 2진 트리(Binary Tree) 2진 트리는 트리 구조 중에서 가장 기초이면서 간단한 트리 구조입니다. 또한 실제 많이 사용하는 트리 이기도 합니다. 2진 트리는 모든 노드가 최대 두 개의 자식 노드를 가지는 트리 자료 구조입니다. 이 두 자식 노드를 왼쪽 자식 노드와 오른쪽 자식 노드라고 하며, 원래의 노드를 이들의 부모 노드라고 합니다. 2진 트리는 2진 탐색 트리와 이진 힙의 구현에 흔히 쓰입니다. -출처 (위키 : 2진 트리) https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A7%84_%ED%8A%B8%EB%A6%AC 트리 용어 -노드(Node) 트리의 요소 하나하나를 나타내는 기본 원소를 의미합니다. -브랜치(Branch) 노드와 노드를 연결하는 연결선을 의미합니다.. 2018. 2. 7.
[visual studio]디버깅 디버깅 visual studio의 디버깅을 사용하면 프로그램의 코드를 한 줄 한 줄 실행하여 변수의 값 등을 확인할 수 있습니다. 디버깅의 전제조건으로는 프로그램의 빌드가 성공해야 합니다. 즉, F7 키를 통해 빌드를 실행하여 빌드가 성공하면 디버깅을 할 수 있습니다. 만약 빌드가 실패하며 디버깅을 할 수 없습니다. 단축키 -F9 커서가 있는 위치에 중단점(break point) 설정 / 해제 위에서 빨간색 네모 안에 커서가 위치하고 있습니다. 이렇게 커서가 위치하고 있는 위치에서 F9 키를 누르면 왼쪽에 빨간색 동그라미가 생기면서 중단점이 설정됩니다. 이렇게 중단점이 설정된 상태에서 한 번 더 F9 키를 누르면 중단점이 해제됩니다. 그리고 F9키가 아닌 마우스 좌클릭으로 빨간색 동그라미가 있는 곳에 클.. 2018. 2. 6.
[자료구조][C++]버블 정렬 버블 정렬 버블 정렬은 가장 큰 수를 맨 마지막으로 이동시키면서 정렬하는 방법입니다. 즉 메모리에 3 9 5 1 6 2 8 4 7 이렇게 저장되어 있다면 0번 index와 바로 그다음 index인 1번 index를 비교하여 앞의 index의 값이 더 크면 두 수를 swap 하고 아니면 그대로 둡니다. 그리고 비교 index의 값을 1씩 증가시켜 1번 index와 2번 index를 비교합니다. 이런 비교를 "배열의 길이 - 1" 만큼 반복하면 맨 마지막 index에 가장 큰 수가 위치하게 됩니다. 3 5 1 6 2 8 4 7 9 이렇게 가장 큰 수인 9가 맨 마지막 index에 위치하게 됩니다. (배열의 길이가 n이라고 가정) 이러한 비교를 또 "배열의 길이 - 1" 만큼 반복하면 되는데 한 번 수행할 때.. 2018. 2. 6.
[C++]Class의 기본 형태 Class의 기본 형태 class를 구현할 때 기본적인 모습은 다음과 같습니다. class C_DATA { private: ... public: C_DATA(); C_DATA(const C_DATA &) = delete; const C_DATA& operator=(const C_DATA &) = delete; virtual ~C_DATA();// class가 상속을 받는 다면 추가되어야할 내용 public: void init(); void release(); void setData(int nData); int getData(); }; 생성자는 기본적인 초기화 작업을 하며 이후 초기 값 세팅은 init() 함수를 따로 구현하여 사용합니다. 소멸자의 경우 아무 일도 하지 않도록 하며 굳이 정의하지 않아도 되.. 2018. 1. 30.
[C++]순수 가상함수와 추상 클래스, 인터페이스(interface) 순수 가상함수 class 상속에서 virtual 키워드를 통해 오버라이딩 함수(가상함수)를 구현 class 상속의 다형성을 구성했는데, 여기서 문제점이 하나 발생하게 됩니다. 부모 class에서 구현한 가상함수를 자식 class가 반드시 구현해야 한다는 강제성이 없다는 것입니다. 즉, 부모 class에서 가상함수를 구현했지만 자식 class에서 이 가상함수를 오버라이딩 하지 않아도 된다는 것입니다. 이렇게 되면 class 상속을 통해 다형성을 구성하지 못합니다. 이 때문에 등장한 것이 순수 가상함수입니다. class C_PARENT { public: virtual void func() abstract; //virtual void func() = 0; //virtual void func() = NULL; .. 2018. 1. 30.