자료구조
-
자료구조...8일지 2020. 9. 30. 14:43
ArrayList 데이터 삭제 메소드 구현 데이터 삭제의 경우 공간을 축소하는 동작은 하지 않는다. 즉, 기존에 공간(Capacity)이 5인 ArrayList에 삽입 동작을 통해 공간이 10으로 증가했을 때, 다시 데이터를 삭제한다고 해서 공간을 5로 줄이는 동작은 하지 않는다. ArrayList.cpp /// /// ArrayList에서 가장 먼저 발견되는 값을 제거한다. /// /// 제거할 값 void ArrayList::Remove(int value) { // 저장된 값에서 지정된 값의 인덱스를 찾아 제거한다. for (int i = 0; i < m_count; i++) { if (m_items[i] == value) { MoveToLeft(i); return; } } } /// /// Arra..
-
자료구조...7일지 2020. 9. 28. 08:36
ArrayList 데이터 삽입 메소드 구현 기본적으로 ArrayList는 데이터를 삽입할 수 있는 공간(Capacity)이 정해져 있다. 그렇기에 기본적으로 데이터를 삽입하면 빈 공간에 데이터를 삽입하는 형태가 된다. - 원본 데이터 인덱스 0 1 2 3 4 데이터 10 20 30 40 - 데이터 삽입 시 빈 공간 있는 경우 인덱스 0 1 2 3 4 데이터 10 20 30 40 50 데이터 삽입 메소드가 호출되었는데 빈 공간이 없는 경우에는 데이터를 저장할 공간을 두배로 늘리고 기존 데이터를 옮긴 후 데이터를 삽입하게 된다. - 삽입 시도 시 데이터 부족한 경우 인덱스 0 1 2 3 4 5 6 7 8 9 데이터 10 20 30 40 50 new! new! new! new! new! 인덱스 0 1 2 3 ..
-
자료구조 개념 정리프로그래밍 기초/자료구조 2020. 9. 27. 21:02
자료구조 개요 자료구조란? 데이터를 효율적으로 접근 및 사용이 가능하도록 하는 데이터의 조직, 저장, 관리 방법을 말한다. 자료 구조의 분류 선형 구조 자료 간 연결 관계가 1:1 관계인 구조 스택, 큐, 덱 배열과 연결 리스트가 포함되기도 한다. 비선형 구조 계층 구조 혹은 망 구조 트리, 그래프 자료구조의 표현 자료의 표현 방법 컴퓨터는 0과 1로 구성된 2 진수를 사용하며 n 개의 비트로 2ⁿ 개의 상태를 표현 가능하다. 1 개의 비트 → 2¹ = 2 개의 상태 표현 (0, 1) 2 개의 비트 → 2² = 4 개의 상태 표현 (00, 01, 10, 11) 3 개의 비트 → 2³ = 8 개의 상태 표현 (000, 001, 010, 011, 100, 101, 110, 111) º º º n 개의 비트 ..
-
자료구조...6일지 2020. 9. 27. 17:38
ArrayList.cpp 생성자, 속성 구현 생성자를 구현했으며 기타 함수의 바디도 만들었다. 데이터를 테스트 하기 위한 PrintInfo 메서드를 추가했다. ArrayList.h #pragma once #include #include class ArrayList { public: #pragma region 생성자 ArrayList(size_t capacity = 10); ArrayList(const ArrayList& other); #pragma endregion #pragma region 속성 // ... #pragma endregion #pragma region 메소드 // ... #pragma endregion private: #pragma region 변수 // ... #pragma endreg..
-
자료구조...5일지 2020. 9. 25. 13:53
선형 리스트 구현 선형 리스트의 이해를 기반으로 C#의 ArrayList를 조금 간략화하여 int만 저장할 수 있는 ArrayList를 만든다. 구현이 필요한 메서드 및 속성은 다음과 같다. 생성자 ArrayList() 비어있고 기본 초기 용량을 가지는 인스턴스 생성 ArrayList(ArrayList&) 다른 ArrayList의 데이터로 인스턴스 생성 ArrayList(int) 비어있고 지정한 초기 용량을 가지는 인스턴스 생성 속성 Capacity 저장될 수 있는 총 크기 Count 실제 사용되고 있는 크기 Item[int] 저장된 데이터의 접근 및 설정 메서드 Add(data) 마지막 위치에 데이터 삽입 AddRange(ArrayList&) 마지막 위치에 다른 ArrayList의 데이터를 모두 삽입 ..
-
자료구조...4일지 2020. 9. 24. 08:58
순차 자료구조 데이터를 순서대로 저장하고 인덱스를 부여하여 관리하는 자료구조를 말한다. 배열을 이용해 리스트를 구현한 선형 리스트(또는 ArrayList)를 포함한다. 선형 리스트 데이터가 메모리에 물리적으로 연속적으로 저장되기 때문에 리스트 중간에서 데이터를 삽입하거나 삭제하는 연산을 하는 경우 데이터를 옮긴 후 동작을 처리해야 하는 오버헤드가 발생한다. - 원본 데이터 인덱스 0 1 2 3 4 데이터 10 20 30 40 - 리스트 끝에 데이터를 삽입하는 경우 인덱스 0 1 2 3 4 데이터 10 20 30 40 50 빈 공간에 데이터를 삽입하고 종료한다. - 리스트 중간에 데이터를 삽입하는 경우 인덱스 0 1 2 3 4 데이터 10 20 30 40 40 인덱스 0 1 2 3 4 데이터 10 20 3..
-
자료구조...3일지 2020. 9. 23. 08:57
자료구조 구현을 위한 프로그래밍 언어의 요소 배열 같은 타입의 데이터를 메모리에 연속적으로 저장하여 인덱스를 통해 접근할 수 있도록 만든 자료구조 포인터 저장된 데이터의 메모리 주소를 가리키는 변수 구조체 여러 타입의 데이터를 묶어 사용하는 사용자 정의 자료형 배열 1차원 배열 동일한 타입의 데이터가 선형으로 나열된 배열 문자열 문자 타입의 데이터로 이루어진 1차원 배열 다차원 배열 동일한 타입의 데이터가 2차원 이상으로 나열된 배열 포인터 자료구조 작성에 포인터를 사용할 때의 이점은 다음과 같다. 주소를 저장하는 값이기 때문에 크기가 일정하다. 32비트 빌드 환경 4 bytes, 64비트 빌드 환경 8 bytes 자료구조를 수정하는 경우 메모리 수정 없이 포인터가 가리키는 주소의 변경 만으로 처리가 가..
-
자료구조...2일지 2020. 9. 22. 08:40
추상 자료형 자료의 형태와 관계된 연산을 수학적으로 정의한 것을 말하며 구체적인 구현을 포함하지 않는다. 이러한 추상화를 통해 알고리즘 정의를 단순화할 수 있다. 자료 연산 추상화 추상 자료형 알고리즘 정의 구체화 자료형 프로그램 구현 알고리즘의 표현 방법 자연어 사람이 사용하는 언어를 사용한다. 일관성과 명확성을 유지하기 어렵다. 순서도 순서도의 작성 규칙에 따라 도식화한다. 복잡한 알고리즘의 표현이 어렵다. 프로그래밍 언어 특정 프로그래밍 언어로 작성하여 추가적인 구체화 작업이 필요하지 않다. 해당 언어를 모르는 사람이 이해하기 어려울 수 있으며 다른 언어에서 사용이 필요한 경우 다시 번역하여 변환하는 추가 작업이 필요하다. 가상 코드 프로그래밍 언어의 형태를 갖춘 추상화된 가상의 언어로 표현한다. ..