자료구조 4

[자료구조] 원형 연결 리스트 (Circular Linked List)

[자료구조] 원형 연결 리스트 (Circular Linked List) 원형 연결 리스트는 마지막 꼬리(Tail)가 NULL을 가리키지 않고 처음 머리(Head)를 가리키는 구조이다. 단일 연결 리스트와 이중 연결 리스트 둘 다 구현이 가능하다. 원형 연결 리스트는 한 노드에서 모든 노드로 접근이 가능할 수 있다는 장점을 가지고 있다. 하지만 잘못 사용 시 무한 순환이 되는 상황이 발생할 수 있습니다. 소스코드 구현 (C++) #include using namespace std; struct Node { Node(int data) { Data = data; Prev = Next = NULL; } void Destroy() { delete this; } Node* Prev; int Data; Node* N..

[자료구조] 이중 연결 리스트 (Doubly Linked List)

[자료구조] 이중 연결 리스트 (Doubly Linked List) 이중 연결 리스트는 단일 연결 리스트와는 다르게 Next뿐만 아니라 Previos도 연결되어있는 양방향 리스트이다. 이 연결 리스트의 장점은 양방향으로 연결이 되어있기 때문에 탐색에 유리하다는 점이다. 즉, 단일 연결리스트는 단방향 탐색이지만 이중 연결 리스트는 양방향 탐색이 가능하다는 것입니다. 하지만 그만큼 양방향을 위해 변수를 추가해서 구조가 복잡해지고 메모리를 더 차지한다는 단점을 가지고 있습니다. 소스코드 구현 (C++) #include using namespace std; struct Node { Node(int data) { Data = data; Prev = Next = NULL; } void Destroy() { dele..

[자료구조] 연결 리스트 (Linked List)

[자료구조] 연결 리스트 (Linked List) 연결 리스트는 각 노드가 데이터와 포인터를 가지고 한줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조이며 선형자료구조에 속한다. 종류는 단일 연결 리스트, 이중 연결 리스트, 원형 연결 리스트 등이 있으며 자료의 추가/삭제에 대해 시간 복잡도 O(1)를 갖는다. 하지만 O(N)의 시간이 걸리는 특수한 경우도 존재한다. 일반적으로 리스트의 맨 앞 노드를 헤드(Head), 맨 뒤 노드를 테일(Tail)이라고 부른다. 단일 연결 리스트 (Singly Linked List) 단일 연결 리스트는 각 노드에 자료 공간과 한 개의 포인터 공간이 있고 각 노드의 포인터는 다음 노드를 가리킨다. 즉, 단일 연결 리스트는 한 방향으로만 연결이 되어있으며 연결된 다음 ..

[자료구조] 자료 구조 (Data Structure)

[자료구조] 자료 구조 (Data Structure) 자료구조는 문제해결을 위해 데이터를 조직화하여 저장하는 것과 이를 구현하는 데 필요한 알고리즘에 대해 논하는 기초이론이다. 자료구조는 크게 4가지로 분류할 수 있으며 단순 자료구조, 선형 자료구조, 비선형 자료구조, 파일 자료구조 이다. 단순 구조 (Simple Structure) 흔히들 알고있는 정수, 실수, 문자, 문자열과 같은 자료형을 뜻한다. 선형 자료 구조 (Linear Data Structure) 데이터를 연속적으로 나열한 형태의 자료 구조이다. 리스트, 연결리스트, 스택, 큐, 데큐가 있다. 비선형 자료 구조 (NonLinear Data Structure) 데이터를 여러 관계로 연결한 형태의 자료 구조이다. 대표적인 케이스로는 트리와 그래..