자료구조
-
자료구조...22일지 2020. 10. 25. 17:48
기능 메서드 구현 자료구조를 효율적으로 사용하기 위한 기능 메서드를 구현한다. DoublyLinkedList.cpp /// /// 지정한 값을 포함한 노드가 존재하는지 확인한다. /// /// 찾을 값 /// 값의 존재 여부 bool DoublyLinkedList::Contains(int value) { DoublyLinkedListNode* curNode{ m_head }; while (curNode != nullptr) { if (curNode->m_data == value) { return true; } curNode = curNode->m_next; } return false; } /// /// 지정한 노드가 DoublyLinkedList에 포함되는지 확인한다. /// /// 찾을 노드 /// 노..
-
자료구조...21일지 2020. 10. 24. 13:48
데이터 삭제 메서드 구현 데이터 삭제 연산에 필요한 메서드들을 구현한다. DoublyLinkedList.cpp /// /// DoublyLinkedList에서 가장 처음 일치한 지정된 값을 포함한 노드를 제거한다. /// /// 제거할 값 bool DoublyLinkedList::RemoveFirst(int value) { DoublyLinkedListNode* curNode{ m_head }; while (curNode != nullptr) { if (curNode->m_data == value) { break; } curNode = curNode->m_next; } if (curNode == nullptr) { return false; } Remove(curNode); return true; } //..
-
자료구조...20일지 2020. 10. 22. 21:30
데이터 삽입 메서드 구현 데이터 삽입 연산에 필요한 메서드들을 구현한다. DoublyLinkedList.cpp /// /// SinglyLinkedList의 시작 위치에 지정한 값이 포함된 새 노드를 추가한다. /// /// 추가할 값 void DoublyLinkedList::AddFirst(int value) { DoublyLinkedListNode* newNode{ PopNode(value) }; AddFirst(newNode); } /// /// SinglyLinkedList의 시작 위치에 지정한 노드를 추가한다. /// /// 추가할 새 노드 void DoublyLinkedList::AddFirst(DoublyLinkedListNode* node) { if (node == nullptr || no..
-
자료구조...19일지 2020. 10. 20. 22:03
생성자,자유 공간 리스트 구현 기본 생성자와 DoublyLinkedList를 인자로 받는 복사 생성자를 구현하고 노드의 메모리 할당과 해제를 최소화하기 위한 자유 공간 리스트를 구현한다. DoublyLinkedList.cpp /// /// 비어있는 DoublyLinkedList를 생성한다. /// DoublyLinkedList::DoublyLinkedList() : m_count(0), m_head(nullptr), m_tail(nullptr), m_free(nullptr) { } /// /// 다른 SinglyLinkedList가 가지고 있는 노드를 복사해 SinglyLinkedList를 생성한다. /// /// 기준이 될 DoublyLinkedList DoublyLinkedList::DoublyLin..
-
자료구조...18일지 2020. 10. 18. 17:01
이중 연결 리스트 구현 단일 연결 리스트의 이해를 기반으로 C#의 LinkedList를 간략화하여 int만 저장할 수 있는 DoublyLinkedList를 만든다. 구현이 필요한 메서드 및 속성은 다음과 같다. 생성자 DoublyLinkedList() 비어있는 인스턴스 생성 DoublyLinkedList(DoublyLinkedList&) 다른 DoublyLinkedList 데이터로 인스턴스 생성 속성 Count 사용되고 있는 노드의 수 First 리스트의 처음 노드 Last 리스트의 마지막 노드 메서드 AddFirst(data) 시작 위치에 데이터를 포함한 노드 생성 후 삽입 AddFirst(node) 지정된 노드 삽입 AddLast(data) 시작 위치에 데이터를 포함한 노드 생성 후 삽입 AddLas..
-
자료구조...17일지 2020. 10. 17. 15:17
이중 연결 리스트 이중 연결 리스트는 이전 노드의 주소와 다음 노드의 주소를 모두 관리한다. - 삽입(Insert) 연산 기존 노드의 다음을 삽입 노드가 가리키고 기존 노드의 다음은 삽입 노드를 가리키도록 하고 다음 노드의 이전을 삽입 노드가 가리키고 다음 노드의 이전은 삽입 노드를 가리키도록 한다. * 원본 데이터 리스트 끝에 노드를 삽입하는 경우 리스트의 마지막 노드의 다음이 삽입 노드를 가리키고 삽입 노드의 이전이 마지막 노드를 가리키도록 만들어준다. ※ 리스트 앞에 노드를 삽입하는 경우 삽입 노드의 다음이 처음 노드를 가리키고 처음 노드의 이전이 삽입 노드를 가리키도록 만들어주면 된다. 리스트 중간에 노드를 삽입하는 경우 리스트 앞에 노드를 삽입할 때의 작업과 리스트 뒤에 노드를 삽입할 때의 작업..
-
연결 자료구조 - 단일 연결 리스트(SinglyLinkedList)프로그래밍 기초/자료구조 2020. 10. 16. 09:56
연결 자료구조 메모리에 연속적으로 저장되어 연결되는 것이 아니라 각 원소가 가진 포인터를 통해 다음 원소를 가리키는 것으로 연결된다. 순차 자료구조의 삽입과 삭제에 추가 연산이 필요하고 메모리 사용에 비효율적이라는 문제를 개선한 방법이다. 노드 자료구조에서는 연결 자료구조의 표현을 위한 데이터와 다음 원소를 가리키는 포인터의 묶음으로 이루어진 구조를 노드라고 한다. 데이터를 저장하는 부분을 데이터 필드(Data Field), 포인터 부분을 링크 필드(Link Field)라고 한다. 다음의 순차 자료구조로 표현된 데이터를 연결 자료구조로 표현하면 다음과 같이 표현된다. - 순차 자료구조 표현 인덱스 0 1 2 3 데이터 10 20 30 40 - 연결 자료구조 표현 ※ 연결 자료구조는 인덱스를 저장하는 것이..
-
자료구조...16일지 2020. 10. 15. 08:58
기능 메서드 구현 자료구조를 효율적으로 사용하기 위한 기능 메서드를 구현한다. SinglyLinkedList.cpp /// /// 지정한 값을 포함한 노드가 존재하는지 확인한다. /// /// 찾을 값 /// 값의 존재 여부 bool SinglyLinkedList::Contains(int value) { SinglyLinkedListNode* curNode = m_head; while (curNode != nullptr) { if (curNode->m_data == value) { return true; } curNode = curNode->m_next; } return false; } /// /// 지정한 노드가 SinglyLinkedList에 포함되는지 확인한다. /// /// 찾을 노드 /// 노드..