Data Structure
-
문제 11-1 이진 탐색 트리의 조건Data Structure/윤성우의 열혈 자료구조 2019. 8. 16. 06:29
이진 탐색 트리가 되기 위한 조건 정리 1. 이진 탐색 트리의 노드에 저장된 키는 유일하다 2. 루트 노드의 키가 왼쪽 서브 트리를 구성하는 어떠한 노드의 키보다 크다 3. 루트 노드의 키가 오른쪽 서브 트리를 구성하는 어떠한 노드의 키보다 작다 4. 왼쪽과 오른쪽 서브 트리도 이진 탐색 트리이다. 2와 3의 조건을 다음과 같이 바꾼다면 부모 노드의 키가 왼쪽 자식 노드의 키보다 크다. 부모 노드의 키가 오른쪽 자식 노드의 키보다 작다. 이는 모든 이진 탐색 트리가 만족하는 조건이긴 하지만, 이진 탐색 트리만 만족하는 조건은 아니기에 이렇게 대채하는 것은 불가능하다. 위의 두가지 조건을 만족하지만 이진 탐색 트리가 아닌 '이진 트리의 예'는 ? 루트 노드인 10보다 큰 값이 왼쪽 서브 트리에 존재한다. ..
-
문제 09 -1 우선순위 큐의 활용Data Structure/윤성우의 열혈 자료구조 2019. 7. 29. 03:50
// UsefulHeap.h #pragma once #define TRUE1#define FALSE0 #define HEAP_LEN100 // typedef char HData;typedef char * HData;typedef int PriorityComp(HData d1, HData d2); typedef struct _heap{PriorityComp * comp;int numOfData;HData heapArr[HEAP_LEN];} Heap; void HeapInit(Heap * ph, PriorityComp pc);int HIsEmpty(Heap * ph); void HInsert(Heap * ph, HData data);HData HDelete(Heap * ph); //UsefulHeap.c #..
-
문제 08-1 이진 트리의 소멸Data Structure/윤성우의 열혈 자료구조 2019. 7. 15. 03:22
문제 : 이진트리를 완전히 소멸시키는 함수를 선언하고 정의해보자.void DeleteTree(BTreeNode * bt); int main(){ BTreeNode * bt1 = MakeBTreeNode();....DeleteTree(bt1);.... 위와 같이 DeleteTree 함수가 호출되면, bt1이 가리키는 노드를 루트 노드로 하는 트리 전부가 완전히 소멸되어야 한다. //bt.h #ifndef __BINARY_TREE2_H__#define __BINARY_TREE2_H__ typedef int BTData; typedef struct _bTreeNode{BTData data;struct _bTreeNode * left;struct _bTreeNode * right;} BTreeNode; BTre..
-
문제 06-1 연결 리스트를 이용한 스택의 또 다른 구현Data Structure/윤성우의 열혈 자료구조 2019. 7. 7. 04:00
문제 : 원형 연결리스트를 이용해서 스택을 구현해보자. // CLInkedList. h #include #include typedef struct _node{int data;struct _node * next;}Node; typedef struct _list{Node * head;Node * tail;Node * before;Node * cur;int numOfdata;}List; void InitList(List * plist){plist->tail = NULL;plist->numOfdata = 0;}void LInsert(List * plist, int data){Node * newnode = (Node*)malloc(sizeof(Node));newnode->data = data;if (plist->..
-
문제05-2 더미 노드 기반의 양방향 연결 리스트 구현Data Structure/윤성우의 열혈 자료구조 2019. 7. 2. 03:45
1. 양방향 연결 리스트2. 더미 노드가 리스트의 앞 뒤에 각각 존재 해야함3. 포인터 변수 head와 tail이 있어서 리스트의 앞과 뒤를 각각 가리킴.4. 새노드를 꼬리에 추가하는 방식으로 LInsert 구현 // DlinkedHeader.h #pragma once; typedef struct _node{int data;struct _node * next;struct _node * prev;}Node; typedef struct _dlist{Node * head;Node * tail;Node * cur;int numOfdata;} List; void ListInit(List * plist);void LInsert(List * plist, int data); int LFirst(List * plist,..