Data Structure/윤성우의 열혈 자료구조
-
-
-
문제 04-1 연결 리스트 관련 코드에 익숙해지기Data Structure/윤성우의 열혈 자료구조 2019. 9. 5. 20:55
예제에서는 노드를 머리가 아닌 꼬리에 추가하였다. 따라서 3 - 2 - 7 - 8 순으로 연결되어 있는 리스트에 5를 추가로 삽입하면 3 - 2 - 7 - 8 - 5의 순으로 저장이 된다. 그런데 이번에는 다음 순으로 저장이 되도록 예제를 변경해 보고자 한다. 5 - 8 - 7 - 2 - 3 즉 연결리스트의 머리에 노드가 추가되도록 하자. 코드 #include #include #pragma warning(disable:4996)typedef struct _node{int data;struct _node *next;} Node;int main(void){Node * head = NULL;Node * tail = NULL;Node * cur = NULL;while (1){int temp;printf("자연수..
-
문제 03 -1 리스트 라이브러리의 활용Data Structure/윤성우의 열혈 자료구조 2019. 9. 4. 20:22
문제 03 - 1 1. 리스트를 생성 및 초기화 한 다음, 정수 1부터 9 까지 리스트에 저장 2. 리스트에 저장된 값을 순차적으로 참조하여 그 합을 계산하여 출력 3. 리스트에 저장된 값들 중 2의 배수와 3의 배수에 해당하는 값을 모두 삭제. 4. 마지막으로 리스트에 저장된 데이터를 순서대로 출력 코드 ( C ) #include #include "ArrayList.h" int main(void){// ArrayList의 생성 및 초기화List list;int data;int sum = 0;ListInit(&list); // 정수 1부터 9 까지 저장for (int i = 1; i < 10; ++i)LInsert(&list, i);// 합의 계산 및 출력if (LFirst(&list, &data)) {..
-
문제 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..