4.1 관계

Size: px
Start display at page:

Download "4.1 관계"

Transcription

1 5 장트리 트리 (tree) 정보의항목들이가지 (branch) 로연결될수있게데이터가조직되는것, 예 ) 그림 5.1 정의 : 트리는 1 개이상의노드로이루어진유한집합으로서 1 root node 2 나머지노드들은 n( 0) 개의분리집합 (disjoint set) T 1, T 2,, T n 으로분리, T i 는각각트리로서 subtree 노드 : 정보항목 + 다른노드로뻗어진가지

2 A B C D E F G H I J K L M Level 1 Level 2 Level 3 Level 4 트리관련용어 노드의차수 (A: 3), 트리의차수 (3) Leaf 또는단말노드 (K, L, F, G, M, I, J) Parent (E: B), Children (B: E & F), Siblings (E & F) Ancestor (M: H, D, A), Descendants (B: E, F, K, L) Level (Root: 1), Height or Depth (4)

3 5.2 이진트리 정의 : 이진트리는공집합이거나루트와왼쪽서브트리, 오른쪽서브트리라고부르는분리된이진트리로구성된노드의유한집합이다. 이진트리에대한 ADT

4 structure Binary_Tree ( 줄여서 BinTree) objects: 공백이거나루트노드, 왼쪽 Binary_Tree, 오른쪽 Binary_Tree로구성되는노드들의유한집합 functions: 모든 bt, bt1, bt2 BinTree, item element BinTree Create() ::= 공백이진트리를생성 Boolean IsEmpty(bt) ::= if (bt == 공백이진트리 ) return TRUE else return FALSE BinTree MakeBT(bt1, item, bt2) ::= 왼쪽서브트리가 bt1, 오른쪽서브트리가 bt2, 루트는데이타를갖는이진트리를반환 BinTree Lchild(bt) ::= if (IsEmpty(bt)) return 에러 else bt의왼쪽서브트리를반환 element Data(bt) ::= if (IsEmpty(bt)) return 에러 else bt의루트에있는데이타를반환 BinTree Rchild(bt) ::= if (IsEmpty(bt)) return 에러 else bt의오른쪽서브트리를반환

5 이진트리와트리의차이점 공백이진트리존재 서브트리의순서중요 서로다른두이진트리 empty right subtree A A empty left subtree B B

6 A A Level 1 B B C 2 C D E F G 3 D H I 4 E (a) (b) 5 Figure 5.9: 경사트리와완전이진트리

7 이진트리의특성 보조정리 5.1 [ 최대노드수 ] (1) 레벨 i 에서의최대노드수 : 2 i-1 (i 1) (2) 깊이가 k 인이진트리가가질수있는최대노드수 = 레벨 1,2,..k 의노드의합 = 2 k - 1(k 1) 보조정리 5.2[ 단말노드수와차수가 2 인노드수와의상관관계 ] n0 : 단말노드수, n2 : 차수가 2 인노드수일때 n0 =n2 +1 pf) n : 전체노드수, B : 전체간선수 (n 1 +2n 2 ) n 1 : 차수가 1 인노드수 n=n 0 + n 1 + n 2 n=b+1=n 1 + 2n 2 +1 n 0 =n 2 +1

8 포화이진트리 (full binary tree) 깊이가 K 이고, 노드수가 2 K -1 인이진트리 1,,2 K -1 까지순차적노드번호를붙인깊이 4 의포화이진트리 level 1 1 depth 4 level level level 정의 : 깊이가 K 이고노드수가 n 인이진트리가만일이트리의각노드들이깊이 k 인포화이진트리에서 1 부터 n 까지번호를붙인노드들과일대일로일치할때완전이진트리라함, 예 ) 그림 5.9 의 (b)

9 이진트리의표현 배열표현, 링크표현 이진트리의배열표현 그림 5.10 처럼, 노드에 1 부터 n 까지번호가할당되므로, 일차원배열에각노드를저장 보조정리 5.3 을사용하여자식과부모의위치결정 보조정리 5.3: n 개의노드를가진완전이진트리 1 PARENT(i) : _ I / 2 _ if i 1 2 LCHILD(i) : 2i if 2i n otherwise no left child 3 RCHILD(i) : 2i+1 if 2i+1 n otherwise no right child

10 이진트리의배열표현 1 완전이진트리는배열표현이공간낭비없으므로좋은표현 2 편향이진트리 ( 깊이 k) : 2 k -1 중 k 만사용 ( 최악의경우 ) A A B B C C D E F G D H I E (a) (b)

11 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]... [16] - A B - C D -... E [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] - A B C D E F G H I

12 링크표현 배열표현은 complete binary tree 가아닐때는메모리낭비가있고, 삽입 / 삭제시많은노드이동필요 linked 표현사용 data Left_child data Right_child Left_Child Right_Child typedef struct node *tree_pointer; typedef struct node { int data; tree_pointer left_child, right_child; ;

13 A A B B C C D E F G D H I E (a) (b) root root A 0 A B 0 B C C 0 D 0 E 0 0 F 0 0 G 0 D 0 0 H 0 0 I 0 0 E 0

14 5.3 이진트리순회 트리의노드들을방문하는연산 순회방법 : LVR, LRV, VLR, VRL, RVL, RLV L: 왼쪽이동, V: 노드방문 ( 데이타출력 ), R: 오른쪽이동 왼쪽을오른쪽보다먼저방문 (LR) LVR (inorder) : infix VLR (preorder) : prefix LRV (postorder) : postfix * * + D E 산술식의이진트리표현 operators, variables / C A B

15 중위순회 (inorder traversal) 1. 널노드에도달할때까지왼쪽방향으로이동 2. 널노드에도착하면널노드의부모방문 3. 순회는오른쪽방향으로계속 4. 오른쪽으로이동할수없을때에는하나더뒤의노드로이동 void inorder(tree_pointer ptr) /* 중위트리순회 */ + { * if (ptr) { inorder(ptr->left_child); * printf("%d", ptr->data); D inorder(ptr->right_child); / C A output A / B * C * D + E B E

16 전위순회 (preorder traversal) 1. 노드를먼저방문 2. 왼쪽가지의모든노드방문 3. 널노드에도달하면오른쪽자식을가진가장가까운조상으로돌아가서오른쪽자식에서순회를계속 void preorder(tree_pointer ptr) /* 전위트리순회 */ { if (ptr) { printf("%d", ptr->data); preorder(ptr->left_child); preorder(ptr->right_child); output + * * / A B C D E A / * B * C + D E

17 후위순회 (postorder traversal) 1. 노드를방문하기전에두자식을먼저방문노드보다그노드의자식이먼저출력 void postorder(tree_pointer ptr) /* 후위트리순회 */ { if (ptr) { + postorder(ptr->left_child); * E postorder(ptr->right_child); printf("%d", ptr->data); * D / C output A B / C * D * E + A B

18 반복적중위순회순환을시뮬레이트 : 스택필요 void iter_inorder(tree_pointer node) { int top = -1; /* 스택초기화 */ tree_pointer stack[max_stack_size]; for (;;) { for (; node; node = node->left_child) add(&top, node); /* 스택에삽입 */ node = delete(&top); /* 스택에서삭제 */ if (!node) break; /* 공백스택 */ printf("%d", node->data); node = node->right_child;

19 레벨순서순회 (level order traversal): 큐를사용하는순회 1. 루트먼저방문, 2. 루트의왼쪽자식, 3. 루트의오른쪽자식 void level_order(tree_pointer ptr) /* 레벨순서트리순회 */ { int front = rear = 0; tree_pointer queue[max_queue_size]; if (!ptr) return; /* 공백트리 */ addq(front, &rear, ptr); for (;;) { ptr = deleteq(&front, rear); if (ptr) { printf("%d", ptr->data); if(ptr->left_child) addq(front, &rear, ptr->left_child); if (ptr->right_child) addq(front, &rear, ptr->right_child); else break; // 그림 5.15, output + * E * D / C A B

20 이진트리의추가연산 이진트리의복사 : 트리순회를이용하여하나의노드씩복사 tree_pointer copy(tree_pointer original) // 후위순회변형 { /* 주어진트리를복사하고복사된트리의 tree_pointer 를반환한다. */ tree_pointer temp; if (original) { temp = (tree_pointer) malloc(sizeof(node)); if (IS_FULL(temp)) { fprintf(stderr, "The memory is full"); exit(1); temp->left_child = copy(original->left_child); temp->right_child = copy(original->right_child); temp->data = original->data; return temp; return NULL;

21 이진트리의동일성검사 동일한구조와정보? int equal(tree_pointer first, tree_pointer secon) { /* 두이진트리가동일하면 TRUE, 그렇지않으면 FALSE 를반환한다. */ return ((!first &&!second) (first && second && (first->data == second->data) && equal(first->left_child, second->left_child) && equal(first->right_child, second->right_child));

22 명제식의만족성 (satisfiability) 문제 식의값이참이되도록, 변수에값을지정할수있는방법이있는가? ( x x x ) ( x x ) 가능한모든참과거짓의조합에대해서그결과를조사 위의경우에는 8 가지의조합이가능함 식을계산하기위해서는두 subtree 를먼저계산 : 후위순회

23 ( x x x ) ( x x ) x 3 x 1 x 3 x 2 x 1

24 typedef enum {not, and, or, true, false logical; typedef struct node *tree_pointer; typedef struct node { tree_pointer left_child; logical short int data; value; tree_pointer right_child; ; left_child data value right_child 리프노드의 node->data 는이노드가나타내는변수의현재값을갖는다고가정 : x_1, x_2, x_3 는 true 또는 false 가짐 N 개의변수를갖는명제식의트리를 root 가가리킨다고가정

25 만족성알고리즘 for (all 2^n possible combinations) { generate the next combination; replace the variables by their values; evaluate root by traversing it in postorder; if (root->value) { printf(<combination>); return; printf("no satisfiable combination");

26 트리를계산하는함수는후위순회를수정하여작성 void post_order_eval (tree_pointer node) { if (node) { post_order_eval(node->left_child); post_order_eval(node->right_child); switch(node->data) { case not: node->value =!node->right_child->value; break; case and: node->value = node->right_child->value && node->left_child->value; break; case or: node->value = node->right_child->value node->left_child->value; break; case true: node->value = TRUE; break; case false: node->value = FALSE;

27 5.5 스레드이진트리 이진트리에는 2n 개의링크중 n+1 개의널링크 pf) 2 n_0 + n_1 = n + 1 p200 스레드 (Thread : 실 ) 널링크를다른노드를가리키는포인터로사용 1 ptr->left_child 가 NULL 이면중위순회시 ptr 앞에방문하는노드에대한포인터 2 ptr->right_child 가 NULL 이면중위순회시 ptr 다음에방문하는노드에대한포인터

28 스레드트리예 중위순회 : H D I B E A F C G 그림 5.14 (a) 스레드이진트리는? root A B C D E F G H I

29 스레드이진트리의표현 left_thread 와 right_thread 라는필드첨가 left_thread 가 true 이면 left_child thread false 이면 left_child pointer right_thread 가 true 이면 right_child thread false 이면 right_child pointer typedef struct threaded_tree *threaded_pointer ; typedef struct threaded_tree { short int left_thread ; threaded_pointer left_child ; char data ; threaded_pointer right_child ; short int right_thread ; ;

30 분실스레드 첫번째방문하는 H 의왼쪽자식, 마지막방문하는 G 오른쪽자식 분실스레드해결방법 헤드노드사용 : root left_child 가실제트리의첫번째노드를가리킴 root f - f f A f f B f f C f f D f t E t t F t t G t t H t t I t f = FALSE; t = TRUE

31 스레드이진트리의중위순회 중위후속자찾기 : 다음방문할노드찾기, 스택의사용없음 threaded_pointer insucc (threaded_pointer tree) { threaded_pointer temp ; temp = tree right_child ; if (!tree right_thread) //right_thread 가 false 이면 while (!temp left_thread) temp = temp left_child ; return temp ; // 헤드노드의왼쪽자식은트리를가리키고, 오른쪽스레드는 FALSE 라가정 void tinorder (threaded_pointer tree) { // 스레드이진트리의중위순회 threaded_pointer temp = tree ; for ( ; ; ) { temp = insucc (temp) ; if (temp == tree) break ; print ( %3c, temp->data) ;

32 스레드이진트리에서의노드삽입 s 의오른쪽자식으로 r 을삽입 root root s r s r root (a) root s r s r before (b) after

33 void insert_right (threaded_pointer parent, threaded_pointer child) { // 스레드이진트리에서 child 를 parent 의오른쪽자식으로삽입 threaded_pointer temp ; child right_child = parent right_child ; child right_thread = parent right_thread ; child left_child = parent ; child left_thread = TRUE ; parent right_child = child ; parent right_thread = FALSE ; if (!child right_thread) { //parent 의오른쪽자식이있었으면, //child 는 parent 의전중위후속자였던노드의중위선행자가됨 temp = insucc (child) ; temp left_child = child ;

34 5.6 히프 (heap) 정의 : 최대트리는각노드의키값이그자식의키값보다작지않은트리이다. 최대히프는최대트리이면서완전이진트리이다. 정의 : 최소트리는각노드의키값이그자식의키값보다크지않은트리이다. 최소히프는최소트리이면서완전이진트리이다.

35 최대히프 최소히프

36 추상데이타타입 MaxHeap structure MaxHeap objects : 각노드의값이그자식들의것보다작지않도록조직된 n>0 원소의완전이진트리 functions : 모든 heap MaxHeap, item Element, n, max_size integer MaxHeap Create(max_size) ::= 최대 max_size개의원소를가질수있는공백히프를생성 Boolean HeapFull(heap, n) ::= if (n == max_size) return TRUE else return FALSE MaxHeap Insert(heap, item, n)::= if (!HeapFull(heap, n)) item을히프에삽입하고그히프를반환 else return 에러 Boolean HeapEmpty(heap, n) ::= if (n>0) return TRUE else return FALSE Element Delete(heap, n) ::= if (!HeapEmpty(heap, n)) 히프에서가장큰원소를제거하고그원소를반환

37 우선순위큐 (priority queue) max(min) priority queue: 삭제시 highest(or lowest) priority 를가지는것부터삭제 Heap 을사용하여구현가능 예 ) 운영체제작업스케쥴러 우선순위큐의표현방법 표현방법 삽입 삭제 순서없는배열 Θ(1) Θ(n) 순서없는연결리스트 Θ(1) Θ(n) 정렬된배열 O(n) Θ(1) 정렬된연결리스트 O(n) Θ(1) 최대히프 O(log_2 n) O(log_2 n)

38 최대히프에서의삽입 1, 5, 21 을삽입할때의예 p (a) (a) 삽입전히프 (b) 새노드의초기위치 히프 (a) 에 5 를삽입 (d) 히프 (a) 에 21 을삽입

39 히프의구현 부모를찾아갈수있어야함 완전이진트리이므로배열을사용하면 parent(i) 는 i 2 #define MAX_ELEMENTS 200 /* 최대히프크기 + 1 */ #define HEAP_FULL(n) (n == MAX_ELEMENTS-1) #define HEAP_EMPTY(n) (!n) typedef struct { int key; /* 다른필드들 */ element; element heap[max_elements]; int n = 0;

40 최대히프에삽입 void insert_max_heap(element item, int *n) { /* n개의원소를갖는최대히프에 item을삽입한다. */ int i; if (HEAP_FULL(*n)) { fprintf(stderr, "The heap is full. "); exit(1); i = ++(*n); while ((i!= 1)&&(item.key>heap[i/2].key)){ // 부모보다크면 heap[i] = heap[i/2]; // 부모를 i위치에저장 i /= 2; // item의위치를부모위치 i/2로 heap[i] = item;

41 Insert_max_heap 알고리즘의분석 While 루프, 새로운리프에서루트까지의경로를따라루트까지도달하던가, 부모위치 I/2의값이삽입되어질값보다큰위치 I를선택 n개의원소를가진완전이진트리의높이 log 2 ( n 1) 연산시간은 O(log_2 n)

42 최대히프에서의삭제 최대값얻기위해루트에서삭제 나머지트리를완전이진트리로재구성해야함 히프를재구성하기위해부모노드와자식노드를비교하여순서가틀린원소들을교환 제거됨 (a) 히프구조 (b) 10 이루트에삽입 (c) 최종히프

43 element delete_max_heap(int *n) { /* 가장큰값의원소를히프에서삭제 */ int parent, child; element item, temp; if (HEAP_EMPTY(*n)) { fprintf(stderr, "The heap is empty"); exit(1); /* 가장큰키값을저장 */ item = heap[1]; /* 히프를재구성하기위해마지막원소를이용 */ temp = heap[(*n)--]; parent = 1; child = 2; while (child <= *n) { /* 현 parent 의가장큰자식을탐색 */ if ((child < *n) && (heap[child].key < heap[child+1].key)) child++; if (temp.key >= heap[child].key) break; /* 아래단계로이동 */ heap[parent] = heap[child]; parent = child; child *= 2; heap [parent] = temp; return item;

44 delete_max_heap 알고리즘의분석 부모와자식노드의비교 While 루프 n 개의원소를가진완전이진트리의높이 log 2 ( n 1) 연산시간은 O(log_2 n)

45 5.7 이진탐색트리 삽입, 삭제, 탐색연산에지금까지자료구조중좋은성능 히프는임의의원소의삭제에 O(n) 이진탐색트리는이진트리로서공백가능하고, 만약공백이아니라면 1. 모든원소는서로상이한키를갖는다. 2. 왼쪽서브트리의키들은그루트의키보다작다. 3. 오른쪽서브트리의키들은그루트의키보다크다 4. 왼쪽과오른쪽서브트리도이진탐색트리이다. 이진트리의일종, 이전의전위, 중위, 후위순회를수정없이사용할수있고, 이절에서는삽입, 삭제, 탐색연산을추가한다.

46 이진탐색트리예 ( 그림 5.30) 질문 : 이진탐색트리인가? (a) (b) (c)

47 이진탐색트리의탐색 : key 값을찾는다. tree_pointer search(tree_pointer root, int key) /* 순환탐색 */ { /* 키값이 key 인노드에대한포인터반환. 그런노드가없는경우에는 NULL 반환 */ if (!root) return NULL; if (key == root->data) return root; if (key < root->data) return search(root->left_child, key); return search(root->right_child, key);

48 tree_pointer search2 (tree_pointer tree, int key) /* 반복탐색 */ { /* 키값이 key 인노드에대한포인터반환. 그런노드가없는경우는 NULL 을반환 */ while (tree) { if (key == tree->data) return tree; if (key < tree->data) else tree = tree->left_child; tree = tree->right_child; return NULL; search, serach2 의분석 : 높이가 h 인이진탐색트리에대해 O(h)

49 이진탐색트리에대한삽입 동일한 key 값을가진노드가없어야삽입가능 탐색이실패하면탐색이끝난지점에노드를삽입 그림 5.30(b) 에 80 삽입 탐색이끝난 40 의오른쪽자식에 80 을삽입 5.31 (a) (a) 에 35 삽입 (b) 그림 (a) 80 을삽입 (b) 35 를삽입

50 void insert_node(tree_pointer *node, int num) /* 트리내의노드가 num 을가리키고있으면아무일도하지않음 ; 그렇지않은경우는 data=num 인새노드를첨가 */ { tree_pointer ptr, temp = modified_search(*node, num); if (temp!(*node)) { // temp 가널이아니거나, 널이라도 *node 가널 /* num 이트리내에없음 */ ptr = (tree_pointer)malloc(sizeof(node)) ; if (IS_FULL(ptr)) { fprintf(stderr, "The memory is full"); exit(1); ptr->data = num; ptr->left_child = ptr->right_child = NULL; if (*node) /* temp 의자식으로삽입 */ if (num < temp->data) temp->left_child = ptr; else temp->right_child = ptr; else *node = ptr:

51 modified_search search2 를수정 이진탐색트리 *node 에서키값 num 을탐색하는데만약트리가공백이거나 num 이존재하면 NULL 을반환하고, 그렇지않으면탐색도중에마지막으로검사한노드에대한포인터를반환한다. insert_node 의분석 높인 h인트리에서 num을탐색하는데 O(h) 나머지는 Θ(1) 전체시간은 O(h)

52 이진탐색트리에서의삭제 : 세가지경우가존재 1. 단말노드의삭제 : 부모의자식필드에 NULL 을삽입 그림 31(b) 에서 35 를삭제하려면그부모노드의왼쪽자식필드를 NULL 로만들고노드를반환, 결과는그림 31(a) 2. 하나의자식을가진비단말노드의삭제 삭제된노드의자식을삭제된노드의자리에대체 그림 5.31(a) 에서 40 을삭제하면그림 5.32 의트리 3. 두개의자식을가진비단말노드의삭제 : i. 왼쪽서브트리에서가장큰원소로치환, 또는 ii. 오른쪽서브트리에서가장작은원소로치환대체하려고선택된노드를 A 라하면 A 의자식을 A 의부모노드의자식으로연결하고, A 를반환 ( 참고 ) A 의자식은 0 이거나 1 (A 는가장크거나작으므로 )

53 그림 그림 5.33 두자식을가진노드의삭제 (b) 60 을삭제하기전의트리 (b) 60 을삭제한후의트리

54 이진탐색트리 (n) 의높이 worst case : height = n [1,2,3,,n] 으로삽입할때 average : height = O(log n ) 최악의경우에도 height = O(log n ) 이되는트리 균형탐색트리 (balanced search tree) 탐색, 삽입, 삭제를 O(h) 시간에할수있다. 10 장 : AVL, 2-3, 2-3-4, red-black, B 트리

55 5.8 선택트리 K 개의런 (run) 에서가장작은키의레코드를출력 런 : key에따라비감소순서로정렬된레코드로구성 직접적인방법은 k-1번비교 선택트리사용하여 k-1 보다적은비교로가능 run 1 run 2 run 3 run 4 run 5 run 6 run 7 run 8

56 선택트리의구성 단말노드 : 해당런의첫번째레코드 각비단말노드 : 토너먼트의승자 루트노드 : 전체승자또는가장작은값 선택트리구현 노드는레코드에대한포인터만을포함 배열표현방식사용 (why?) : 노드번호는노드의주소 시간복잡도 비교는단말노드에서루트로가는경로에서발생 k 1 트리의레벨수는 ceil (log ) 2 따라서, 트리의재구성시간은 O(log k), n개의모든레코드를모두합병하는데 O(n log k) 처음선택트리설정 O(k) 이므로전체시간은 O(n log k)

57 승자트리에서한레코드가출력되고나서재구성된모습 ( 변경된노드는표시되어있음 ) 연습 run 1 run 2 run 3 run 4 run 5 run 6 run 7 run 8

58 패자트리 노드가패자를표현, 좀더빠른알고리즘 형제노드들은전에시행되었던토너먼트의패자 비단말노드는패자, 승자는상위노드로진출 각노드는레코드에대한포인터저장, 그림에서는편의상레코드의키값사용, 노드 0 은전체토너먼트의승자 0 6 전체승자 Run

59 5.9 포리스트 포리스트 : n >= 0 개의분리트리의집합 포리스트의이진트리변환 변환된이진트리들을루트의오른쪽서브트리로연결 정의 : T1,T2,,Tn 이트리들로이루어진포리스트라하면이포리스트에대응하는이진트리, B(T1,T2,,Tn) 는 (1) n=0 이면공백 (2) B 는 T1 과같은루트를가지며, 왼쪽서브트리로 B(T11,T12,,T1m), 여기서, T11,T12,, T1m 는 T1 의서브트리 오른쪽서브트리 = B(T2,,Tn)

60 세개의트리로구성된포리스트 A E G B C D F H I 변환된이진트리표현 A B E C F G D H I

61 포리스트 F 에대응하는이진트리 T 의전위, 중위순회는 F 의순회와대응관계 포리스트전위 (forest preorder) (1) F 가공백이면귀환 (2) F 의첫트리의루트를방문 (3) 첫트리의서브트리들을포리스트전위순회 (4) F 의나머지트리들을포리스트전위로순회 포리스트중위 (forest inorder) (1) F 가공백이면귀환 (2) F 의첫트리의서브트리를포리스트중위로순회 (3) 첫트리의루트를방문 (4) 나머지트리들을포리스트중위로순회 포리스트후위 (forest postorder) (1) F 가공백이면귀환 (2) F 의첫트리의서브트리를포리스트후위로순회 (3) 나머지트리들을포리스트후위로순회 (4) F 의첫트리의루트를방문

62 5.10 집합표현 트리를사용한집합표현 그림 5.39: 자식에서부모로가는링크로연결 S 1 S 2 S 3 i [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] parent

63 집합의연산 Union : S_1 U S_2 = {0, 6, 7, 8 U {1, 4, 9 = {0, 6, 7, 8, 1, 4, 9 Find (I): 원소 I 를포함하는집합을찾음, 3 은 S_3 에 8 은 S_1 에있음 Union( 합집합 ) 연산 두트리중의하나를다른트리의서브트리로만듦 한루트의부모필드가다른트리의루트를가리키도록함 S 1 S 2 or S 1 S 2

64 find(i) I 에서시작하여음수값의부모인덱스를따라감 find(5) 는 int find1 (int I) { for (; parent[i] >= 0; I = parent[i]) ; return I ; void union1 (int I, int j) { parent[i] = j ;

65 union1 과 find1 의분석 S_I = {I 인집합, 다음의연산을수행 union(0, 1), union(1, 2),, union(n-2, n-1), find(0), find(1),, find(n-1) N-1 N-2 0 union 연산은상수이므로 n-1 개수행 O(n) find 는레벨 I 에대해서는 O(I) 이므로 find(0), find(1),...,find(n-1) = n: O(n^2)

66 union 연산의효율적구현 union(i,j) 를위한가중법칙 트리 I 의노드수 < 트리 j 의노드수 j 가 I 의부모 트리 I 의노드수 > 트리 j 의노드수 i 가 j 의부모 가중법칙을적용하면그림 5.44 가중법칙을적용하기위해, 트리의노드수를루트노드의 parent 필드에음수로저장하면됨

67 void union2 (int I, int j) {/* 가중법칙을이용하여루트가 I 와 j 인집합을합집합함. Parent[I] = -conunt[i], parent[j] = -count[j] int temp = parent[i] + parent[j] ; if (parent[i] > parent[j]) { // 음수이므로 i쪽이노드수가작다 parent[i] = j; /*j를새루트로만듦 */ parent[j] = temp ; else { parent[j] = i; /*i를새루트로만듦 */ parent[i] = temp ;

68 보조정리 5.4: n 개의노드를가진트리 T 가 union2 함수로만들어진트리라면, T 에있는어떤노드도 _ log_2 n _ + 1 보다큰레벨을가질수없다. 보조정리 5.4에따라 union2로만들어진트리에서 find 연산시간 O(log_2 n) 이므로 n-1개의 union과 m개의 find를실행하는시간은 O(n + mlog_2 n)

69 예제 5.1 결과는그림 5.45 예제 5.2 그림 5.45 에서 8 개의 find(7) 를수행하면각각 3 개의 parent 링크필드를거쳐야하므로, 24 개의링크를이동 붕괴법칙을사용하여 find 를수정한 find2 는처음 find2 는세개의링크를거치고세개의링크를변경, 나머지는 7 개는하나의링크만거치면되므로총 13 번이동

70 붕괴법칙 : 만일 j 가 I 에서루트로가는경로위에있다면 j 를루트의자식으로만든다. int find2(int I) { /* 원소 I 를포함하는루트를찾음. 붕괴법칙을사용하여 I 로부터루트로가는모든노드를붕괴시킴 */ int root, trail, lead ; for (root = I; parent[root] >= 0; root = parent[root]) ; for (trail = I; trail!= root; trail = lead) { lead = parent[trail] ; parent[trail] = root ; return root ;

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

chap 5: Trees

chap 5: Trees Chapter 5. TREES 목차 1. Introduction 2. 이진트리 (Binary Trees) 3. 이진트리의순회 (Binary Tree Traversals) 4. 이진트리의추가연산 5. 스레드이진트리 (Threaded Binary Trees) 6. 히프 (Heaps) 7. 이진탐색트리 (Binary Search Trees) 8. 선택트리 (Selection

More information

7장

7장 CHAP 7: 트리 C 로쉽게풀어쓴자료구조 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모 - 자식관계의노드들로이루어진다. 응용분야 : 계층적인조직표현파일시스템인공지능에서의결정트리 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀생산 1 팀생산 2 팀 * 예제 : 책그림 7-2, 7-3, 7-4 트리의용어 노드 (node): 트리의구성요소 루트

More information

제 1 장 기본 개념

제 1 장 기본 개념 이진트리순회와트리반복자 트리순회 (tree traversal) 트리에있는모든노드를한번씩만방문 순회방법 : LVR, LRV, VLR, VRL, RVL, RLV L : 왼쪽이동, V : 노드방문, R : 오른쪽이동 왼쪽을오른쪽보다먼저방문 (LR) LVR : 중위 (inorder) 순회 VLR : 전위 (preorder) 순회 LRV : 후위 (postorder)

More information

슬라이드 1

슬라이드 1 CHAP 7: 트리 C 로쉽게풀어쓴자료구조 생능출판사 2005 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모 - 자식관계의노드들로이루어진다. 대표이사 응용분야 : 계층적인조직표현 총무부 영업부 생산부 파일시스템 인공지능에서의결정트리 전산팀구매팀경리팀생산 1 팀생산 2 팀 트리의용어 노드 (node): 트리의구성요소 루트 (root): 부모가없는노드

More information

Microsoft PowerPoint - Chap5 [호환 모드]

Microsoft PowerPoint - Chap5 [호환 모드] 5.3 Binary Tree Traversal Tree 의각 node 를한번씩방문하는알고리즘 각 node 와그 node 의 subtree 들을동등하게취급하면 6 개의 traversal 조합이있다. (L: Left 로움직임, V: 노드를 visiting, R: Right 로움직임 ) (1) LVR, (2) LRV, (3) VLR, (4) VRL, (5) RVL,

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

08장.트리

08장.트리 ---------------- T STRUTURES USING ---------------- HPTER 트리 /29 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모-자식관계의노드들로이루어짐 응용분야 : 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀 생산 팀 생산 2 팀 (a) 회사의조직도 내문서 동영상음악사진 영화예능드라마 여행 (b) 컴퓨터의폴더구조

More information

슬라이드 제목 없음

슬라이드 제목 없음 Chapter 5: TREES Trees Trees Def) a tree is finite set of one or more nodes such that 1) there is a special node (root) 2) remaining nodes are partitioned into n 0 disjoint trees T 1,T 2,,T n where each

More information

Microsoft PowerPoint - lec07_tree [호환 모드]

Microsoft PowerPoint - lec07_tree [호환 모드] Tree 2008학년도 2학기 kkman@sangji.ac.krac kr -1- 트리 (Tree) 1. 개요 ~ 계층적인구조를나타내는비선형 (Non-linear) 자료구조 ~ 트리는부모 - 자식관계의노드로구성 ~ 응용분야 계층적인조직표현 파일시스템 인공지능에서의결정트리 -2- 트리자료구조를사용하는이유? ~ 다른자료구조와달리비선형구조. ~ 정렬된배열 탐색은빠르지만

More information

Microsoft PowerPoint - chap10_tree

Microsoft PowerPoint - chap10_tree Chap. 10 : Tree 2007 학년도 2 학기 1. 개요 재귀 (recursion) 의정의, 순환 ~ 정의하고있는개념자체에대한정의내부에자기자신이포함되어있는경우를의미 ~ 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 ~ 정의자체가순환적으로되어있는경우에적합한방법 ~ 예제 ) 팩토리얼값구하기 피보나치수열 이항계수 하노이의탑 이진탐색 -2-

More information

슬라이드 1

슬라이드 1 Data Structure Chapter 8. 우선순위큐 Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 우선순위큐추상데이터타입 우선순위큐 우선순위큐 (priority queue) 정의 : 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게됨 스택이나 FIFO 큐를우선순위큐로구현할수있음

More information

5 장 트 리

5 장  트 리 5 장 트리 Copyright 2007 DBLAB, Seoul National University 트리구조 Copyright 2007 DBLAB, Seoul National University 2 트리 트리 : 하나이상의노드 (node) 로이루어진유한집합 1 하나의루트 (root) 노드 2 나머지노드들은 n( 0) 개의분리집합 T 1, T 2,, T n 으로분할

More information

Microsoft PowerPoint - 제9장-트리의응용.pptx

Microsoft PowerPoint - 제9장-트리의응용.pptx 제 9 강의. 트리의탐색 1. 이진트리탐색알고리즘 2. 쓰레드 (Threaded) 이진트리 3. 이진트리를다루는알고리즘 1 1. 이진트리탐색알고리즘 트리의탐색 (traversal) 은트리의각노드를방문하는작업을말한다. ( 왜방문할까요?) 다음과같은방법들을생각해볼수있다. 방법 1) 레벨순 : 레벨이낮은순으로방문 A B C D E F G H 3가지다른방법이나올수있다.

More information

Ch.1 Introduction

Ch.1 Introduction Tree & Heap SANGJI University Kwangman Ko (kkman@sangji.ac.kr) 트리개요 트리 (Tree) ~ 계층적인구조를나타내는비선형 (Non-linear) 자료구조 ~ 트리는부모-자식관계의노드로구성 ~ 응용분야 계층적인조직표현 파일시스템 인공지능에서의결정트리 kkman@sangji.ac.kr 2 트리자료구조를사용하는이유?

More information

입학사정관제도

입학사정관제도 자료구조 강의노트 교재 : C 로배우는쉬운자료구조 ( 개정판 ) 출판사 : 한빛미디어 (2011 년 3 월발행 ) 저자 : 이지영 소프트웨어학과원성현교수 1 8 장트리 소프트웨어학과원성현교수 93 1. 트리 트리개요 트리 (tree) 란? 리스트, 스택, 큐등은선형자료구조 (linear data structure) 인것에반해서트리는계층 (hierarchy)

More information

슬라이드 1

슬라이드 1 CHAP 8: 우선순위큐 yicho@gachon.ac.kr 1 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터

More information

슬라이드 1

슬라이드 1 CHAP 7: 트리 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 리스트, 스택, 큐등은선형구조 트리는부모 - 자식관계의노드들로이루어진다. 응용분야 : 계층적인조직표현 컴퓨터디스크의디렉토리구조 인공지능에서의결정트리 (decision tree) 회사의조직 파일디렉토리구조 결정트리 ( 예 ) 골프에대한결정트리 트리의용어 노드 (node): 트리의구성요소

More information

Microsoft PowerPoint - 제8장-트리.pptx

Microsoft PowerPoint - 제8장-트리.pptx 제 8 강의. 트리 (Tree) 자료구조 1. 트리의개념 2. 이진트리 3. 이진트리의저장 1 트리자료구조필요성연결리스트의삽입삭제시데이터를이동하지않는장점을살리자. 연결리스트의검색시노드의처음부터찾아가야하는단점을보완하자. 데이터를중간부터찾아가는이진검색의장점을이용하자. 연결리스트의포인터를리스트의중간에두는방법? ptr 10 23 34 42 56 검색을중간부터시작하여좌우중하나로분기,

More information

o 경로 (path) 트리에서사용하는용어 ~ 어떤한노드에서다른노드까지링크를통해이동했을때, 거쳐온노드들의집합. o 루트 (root) ~ 트리의가장상위에있는노드로루트는항상하나만존재 o 부모, 자식 (parent, children) ~ 링크로연결된노드중위에있는노드를부모노드,

o 경로 (path) 트리에서사용하는용어 ~ 어떤한노드에서다른노드까지링크를통해이동했을때, 거쳐온노드들의집합. o 루트 (root) ~ 트리의가장상위에있는노드로루트는항상하나만존재 o 부모, 자식 (parent, children) ~ 링크로연결된노드중위에있는노드를부모노드, Tree & Heap SANGJI University Kwangman Ko kkman@sangji.ac.kr - 1 - o 트리 (Tree) 1. 개요 ~ 계층적인구조를나타내는비선형 (Non-linear) 자료구조 ~ 트리는부모 - 자식관계의노드로구성 ~ 응용분야 계층적인조직표현 파일시스템 인공지능에서의결정트리 - 2 - o 트리자료구조를사용하는이유? ~ 다른자료구조와달리비선형구조.

More information

슬라이드 1

슬라이드 1 Data Structure Chapter 7. 트리 Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 트리의개념 트리 (Tree) 트리 : 계층적인구조를나타내는자료구조 리스트, 스택, 큐등은선형구조 정의 (1) 하나의루트 (root) 노드 (2) 다수의서브트리 (subtree) 트리는부모-자식관계의노드들로이루어짐

More information

슬라이드 1

슬라이드 1 CHAP 7: 트리 yicho@gachon.ac.kr 1 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 리스트, 스택, 큐등은선형구조 트리는부모 - 자식관계의노드들로이루어진다. 응용분야 : 계층적인조직표현 컴퓨터디스크의디렉토리구조 인공지능에서의결정트리 (decision tree) 2 2 회사의조직 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀생산

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

Microsoft PowerPoint - 자료구조2008Chap07

Microsoft PowerPoint - 자료구조2008Chap07 제 7 장트리 7.1 트리의정의 1 Tree 비선형구조, 다차원적구조 원소마다다음에여러개의원소가존재 하나이상의노드로구성된유한집합 정의1 : 루트 (root) 라는특별한노드를가지는사이클이존재치않는그래프 (acyclic graph) 정의 2 : 하나이상의노드로구성된유한집합 루트 (root) 라는특별한노드존재 나머지노드들은다시각각의트리이면서교차하지않는분리집합 (disjoint

More information

05_tree

05_tree Tree Data Structures and Algorithms 목차 트리의개요 이진트리의구현 이진트리의순회 (Traversal) 수식트리 (Expression Tree) 의구현 Data Structures and Algorithms 2 트리의개요 Data Structures and Algorithms 3 트리의접근과이해 트리는계층적관계 (Hierarchical

More information

e-비즈니스 전략 수립

e-비즈니스 전략 수립 트리 IT CookBook, C 로배우는쉬운자료구조 ( 개정판 ) Contents 학습목표 트리의개념을이해한다. 이진트리의자료구조를알아본다. 이진트리에서의순회를이해한다. 이진탐색트리의개념을이해하고연산방법을이해한다. 히프의자료구조를이해한다. 내용 트리 이진트리 이진트리의구현 이진트리의순회 이진탐색트리 히프 2/104 1. 트리 트리 (tree) 원소들간에 1:

More information

Microsoft PowerPoint - Chap5 [호환 모드]

Microsoft PowerPoint - Chap5 [호환 모드] 데이터구조 (hapter 5: Trees) 2011 년봄학기 숙명여자대학교정보과학부멀티미디어과학전공박영호 Index hapter 01: asic oncepts hapter 02: rrays and Structures hapter 03: Stacks and Queues hapter 04: Lists hapter 05: Trees hapter 06: Graphs

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

Chap 6: Graphs

Chap 6: Graphs 그래프표현법 인접행렬 (Adjacency Matrix) 인접리스트 (Adjacency List) 인접다중리스트 (Adjacency Multilist) 6 장. 그래프 (Page ) 인접행렬 (Adjacency Matrix) n 개의 vertex 를갖는그래프 G 의인접행렬의구성 A[n][n] (u, v) E(G) 이면, A[u][v] = Otherwise, A[u][v]

More information

untitled

untitled 1. void inorder(tree_ptr ptr) { if(ptr) { inorder(ptr->left_child); printf( %d,ptr->data); inorder(ptr->right_child); 2) => A / B * C * D + E () A / B * C * D + E void preorder(tree_ptr ptr) { if(ptr)

More information

정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2

정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2 13. 탐색트리 AVL 트리, B- 트리, 2-3-4 트리 정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2 이진탐색트리의예 3 BST 의최선과최악의경우

More information

슬라이드 1

슬라이드 1 CHAP 8: 우선순위큐 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터 응용분야 : 시뮬레이션시스템 ( 여기서의우선순위는대개사건의시각이다.)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 3. 트리 3.1 트리의개요 3.2 이진트리 3.3 트리의운행 3.1 트리의개요 트리 : 그래프의일종 데이터 : 노드 순환적정의 T = {R, T 1,T 2, T n } R : 루트 T i : 서브-트리 ( 트리 ) 3.1 트리의개요 1. 노드 2. 근노드 3. 서브트리 4. 차수 5. 단노드 6. 간노드 (nonterminal node) 7. 부-노드,

More information

슬라이드 1

슬라이드 1 CHAP 8: 우선순위큐 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 우선순위큐 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터 응용분야 : 시뮬레이션시스템

More information

제 11 장 다원 탐색 트리

제 11 장 다원 탐색 트리 제 11 장 다원탐색트리 Copyright 07 DBLB, Seoul National University m- 원탐색트리의정의와성질 (1) 탐색성능을향상시키려면메모리접근횟수를줄여야함 탐색트리의높이를줄여야함 차수 (degree) 가 2보다큰탐색트리가필요 m- 원탐색트리 (m-way search tree) 공백이거나다음성질을만족 (1) 루트는최대 m 개의서브트리를가진다.

More information

슬라이드 1

슬라이드 1 6-1 리스트 (list) 란순서를가진항목들을표현하는자료구조 리스트를구현하는두가지방법 배열 (array) 을이용하는방법 구현간단 삽입, 삭제시오버헤드 항목의개수제한 연결리스트 (linked list) 를이용하는방법 구현복잡 삽입, 삭제가효율적 크기가제한되지않음 6-2 객체 : n 개의 element 형으로구성된순서있는모임 연산 : add_last(list,

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

슬라이드 1

슬라이드 1 CHAP 6: 큐 yicho@gachon.ac.kr 1 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 2 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element

More information

Chapter 4. LISTS

Chapter 4. LISTS 연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는

More information

C 언어 강의노트

C 언어 강의노트 C언어 (CSE2035) (15-1 Lists) Linear list 의구성, Insertion, deletion 윤용운, Ph.D. Dept. of Computer Science and Engineering Sogang University Seoul, Korea Tel: 010-3204-6811 Email : yuyoon0@sogang.ac.kr 2018-01-11

More information

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ 00. 리스트 자료구조 01. 링크드 리스트 02. 더블 링크드 리스트 03. 환형 링크드 리스트 리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : (

More information

Chapter 08. 트리(Tree)

Chapter 08. 트리(Tree) 윤성우의열혈자료구조 : C 언어를이용한자료구조학습서 Chapter 08. 트리 (Tree) Introduction To Data Structures Using C Chapter 08. 트리 (Tree) Chapter 08-1: 트리의개요 트리의접근과이해 트리는계층적관계 (Hierarchical Relationship) 를표현하는자료구조이다. 트리의예 트리의예

More information

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

06장.리스트

06장.리스트 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 리스트 1/28 리스트란? 리스트 (list), 선형리스트 (linear list) 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 카드 :

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

1장. 리스트

1장. 리스트 01. 링크드리스트 02. 더블링크드리스트 03. 환형링크드리스트 배열과는달리유연하게크기를바꿀수있는자료구조 각노드는다음노드를가리키는포인터를가짐. 각노드를다음노드를가리키는포인터로연결하여만든리스트. Single Linked List 라고도함. 링크드리스트의첫번째노드를헤드 (Head), 마지막노드를테일 (Tail) 이라고한다. C 언어로표현하는링크드리스트의노드 typedef

More information

Microsoft PowerPoint - 6장 탐색.pptx

Microsoft PowerPoint - 6장 탐색.pptx 01. 순차탐색 02. 이진탐색 03. 이진탐색트리 04. 레드블랙트리 탐색 (search) 기본적으로여러개의자료중에서원하는자료를찾는작업 컴퓨터가가장많이하는작업중의하나 탐색을효율적으로수행하는것은매우중요. 탐색키 (search key) 항목과항목을구별해주는키 (key) 탐색을위하여사용되는자료구조 배열, 연결리스트, 트리, 그래프등 탐색키데이터 순차탐색 (sequential

More information

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E > 제 7 강의. 고급연결리스트 1. 원형연결리스트 2. 이중연결리스트 3. 연결리스트알고리즘 1 1. 원형연결리스트 (Circularly Linked Lists) 원형연결리스트란? 연결리스트의맨끝노드를첫번째노드와연결시켜서원형으로만든리스트 단순연결리스트 (Singly Linked List) 불편한점 - 연결리스트의노드포인터를알고있을때첫번째노드는바로찾아갈수있지만마지막노드는리스트전체를따라가면서끝을찾아가야한다

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 10 장. 트리 트리 리스트나스택, 큐가데이터집합을한줄로늘어세운선형자료구조라면트리는두갈래로나누어세운비선형구조이다. 비선형구조를고안한동기는바로이구조가지닌효율성때문이다. 즉, 삽입, 삭제, 검색이라는주작업에대해서선형구조보다나은시간적효율을보일수있다. 학습목표 트리와관련된용어를정확히이해한다. 이진트리의세가지순회방법의차이점을이해한다. 포인터로구현한이진탐색트리의탐색,

More information

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74 큐 IT CookBook, C 로배우는쉬운자료구조 ( 개정판 ) Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74 1. 큐 v 큐 (Queue) 데이터의삽입과삭제가양쪽끝에서일어나는자료구조

More information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

슬라이드 1

슬라이드 1 CHAP 5 : 스택 yicho@gachon.ac.kr 1 5.1 스택추상데이터타입 스택 (stack) 이란?: 쌓아놓은더미 2 스택의특징 후입선출 (LIFO:Last-In First-Out): 가장최근에들어온데이터가가장먼저나감. D C B C B C B C B A A A A 3 스택의구조 요소 (element) 스택에저장되는것 C 스택상단 (top) : 스택에서입출력이이루어지는부분

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 트리 10 장. 트리 리스트나스택, 큐가데이터집합을한줄로늘어세운선형자료구조라면트리는두갈래로나누어세운비선형구조이다. 비선형구조를고안한동기는바로이구조가지닌효율성때문이다. 즉, 삽입, 삭제, 검색이라는주작업에대해서선형구조보다나은시간적효율을보일수있다. 학습목표 트리와관련된용어를정확히이해한다. 이진트리의세가지순회방법의차이점을이해한다. 포인터로구현한이진탐색트리의탐색,

More information

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를 리스트에대한설명중틀린것은 구조체도리스트의요소가될수있다 리스트의요소간에는순서가있다 리스트는여러가지방법으로구현될수있다 리스트는집합과동일하다 다음은순차적표현과연결된표현을비교한것이다 설명이틀린것은 연결된표현은포인터를가지고있어상대적으로크기가작아진다 연결된표현은삽입이용이하다 순차적표현은연결된표현보다액세스시간이많이걸린다 연결된표현으로작성된리스트를 개로분리하기가쉽다 다음은연결리스트에서있을수있는여러가지경우를설명했는데잘못된항목은

More information

1장. 리스트

1장. 리스트 01. 순차탐색 02. 이진탐색 03. 이진탐색트리 04. 레드블랙트리 탐색 (search) 기본적으로여러개의자료중에서원하는자료를찾는작업 컴퓨터가가장많이하는작업중의하나 탐색을효율적으로수행하는것은매우중요. 탐색키 (search key) 항목과항목을구별해주는키 (key) 탐색을위하여사용되는자료구조 배열, 연결리스트, 트리, 그래프등 탐색키데이터 순차탐색 (sequential

More information

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx Basic Idea of External Sorting run 1 run 2 run 3 run 4 run 5 run 6 750 records 750 records 750 records 750 records 750 records 750 records run 1 run 2 run 3 1500 records 1500 records 1500 records run 1

More information

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 -

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 - 스택 (stack) SANGJI University Kwangman Ko o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 - o 스택의특징 ~ 모든원소의삽입과삭제가 top 이라는자료구조의한쪽끝에서만수행되는제한된리스트구조 ~ 후입선출 (Last-In-First-Out, LIFO) 방식 가장마지막에입력된자료가가장먼저출력 o 스택의동작 ~ top 에서만삽입

More information

5.스택(강의자료).key

5.스택(강의자료).key CHP 5: https://www.youtube.com/watch?v=ns-r91557ds ? (stack): (LIFO:Last-In First-Out):. D C B C B C B C B (element) C (top) B (bottom) (DT) : n element : create() ::=. is_empty(s) ::=. is_full(s) ::=.

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

Microsoft PowerPoint - 07-chap05-Stack.ppt

Microsoft PowerPoint - 07-chap05-Stack.ppt / 스택이란? 스택 stack): 쌓아놓은더미 hapter 5 스택 Dongwon Jeong djeong@kunsan.ac.kr Department of Informatics & Statistics 학습목표 스택의개념이해 스택의동작원리이해 배열과연결리스트를이용한스택구현 스택응용프로그램 스택의특징 후입선출 LIFO:Last-In First-Out) 가장최근에들어온데이터가가장먼저나감.

More information

ABC 10장

ABC 10장 10 장구조체와리스트처리 0 자기참조구조체 자기참조구조체는자기자신의형을참조하는포인터멤버를가짐 이러한자료구조를동적자료구조라고함 배열이나단순변수는일반적으로블록을진입할때메모리할당을받지만, 동적자료구조는기억장소관리루틴을사용하여명시적으로메모리할당을요구함 10-1 자기참조구조체 10-2 자기참조구조체 예제 struct list { int struct list a; data;

More information

chap01_time_complexity.key

chap01_time_complexity.key 1 : (resource),,, 2 (time complexity),,, (worst-case analysis) (average-case analysis) 3 (Asymptotic) n growth rate Θ-, Ο- ( ) 4 : n data, n/2. int sample( int data[], int n ) { int k = n/2 ; return data[k]

More information

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

Microsoft PowerPoint - 08-chap06-Queue.ppt

Microsoft PowerPoint - 08-chap06-Queue.ppt / 큐 (QUEUE) Chapter 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 큐 Ticket ox Dongwon Jeong djeong@kunsan.ac.kr Department of Kunsan National University 전단 () 후단 () 학습목표 큐 DT 큐의개념및추상데이터타입에대한이해

More information

Microsoft PowerPoint - 08-Queue.ppt

Microsoft PowerPoint - 08-Queue.ppt Chapter Queue ( 큐 ) Dongwon Jeong djeong@kunsan.ac.kr Department of Informatics & Statistics 학습목표 큐의개념및추상데이터타입에대한이해 큐의구현방법 배열 링크드리스트 덱 / 데크의개념과구현방법 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In

More information

Microsoft PowerPoint Merging and Sorting Files.ppt

Microsoft PowerPoint Merging and Sorting Files.ppt 자료처리 () 006 년봄학기문양세강원대학교컴퓨터과학과 정렬 / 합병의개요 정렬의종류 : 내부정렬, 외부정렬 내부정렬 (internal sorting) 데이타가적어서메인메모리내에모두저장시켜정렬가능할때사용함 레코드의판독 (read) 및기록 (write) 에걸리는시간이문제가되지않음 외부정렬 (external sorting) 데이타가많아서메인메모리의용량을초과하여보조기억장치

More information

슬라이드 1

슬라이드 1 CHAP 6: 큐 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 (front) 후단 (rear) 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element 형으로구성된요소들의순서있는모임

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

슬라이드 1

슬라이드 1 CHP 6: 큐 C 로쉽게풀어쓴자료구조 생능출판사 2005 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 큐 DT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

03장.스택.key

03장.스택.key ---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():

More information

11강-힙정렬.ppt

11강-힙정렬.ppt 11 (Heap ort) leejaku@shinbiro.com Topics? Heap Heap Opeations UpHeap/Insert, DownHeap/Extract Binary Tree / Index Heap ort Heap ort 11.1 (Priority Queue) Operations ? Priority Queue? Priority Queue tack

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

리스트연산, 검색 + 삽입 + 삭제 새로운항목을리스트의처음, 중간, 끝에추가. 기존의항목을리스트의임의의위치에서삭제. 모든항목을삭제. 기존항목을대치 (replace). 리스트가특정항목을가지고있는지를검색 (search). 리스트의특정위치의항목을반환. 리스트안의항목의개수를센

리스트연산, 검색 + 삽입 + 삭제 새로운항목을리스트의처음, 중간, 끝에추가. 기존의항목을리스트의임의의위치에서삭제. 모든항목을삭제. 기존항목을대치 (replace). 리스트가특정항목을가지고있는지를검색 (search). 리스트의특정위치의항목을반환. 리스트안의항목의개수를센 Linked List 2014 2 학기 SANGJI University 리스트 (list) 1. 리스트개념 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 핸드폰의문자메시지리스트

More information

슬라이드 1

슬라이드 1 Linked List 2015 2 학기 SANGJI University 1. 리스트개념 리스트 (list) 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 핸드폰의문자메시지리스트

More information

<4D F736F F F696E74202D20C0DAB7E1B1B8C1B65FC3E2BCAEBCF6BEF7>

<4D F736F F F696E74202D20C0DAB7E1B1B8C1B65FC3E2BCAEBCF6BEF7> 한국방송통신대학교컴퓨터과학과 2 학년자료구조 제 1 장기본개념 자료와정보 3 알고리즘 4 자료 data : 현실세계에서관찰이나측정을통해수집된값 value 이나사실 fact 특정한일을수행하는명령어들의유한집합 정보 information : 자료를처리 / 추출 process 해서얻어진유용한결과 입 출 력 : 외부에서제공되는자료가있을수있다력 : 적어도한가지결과를생성한다

More information

1. 리스트개념 리스트 (list) 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : (ᄀ,ᄂ,,ᄒ

1. 리스트개념 리스트 (list) 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : (ᄀ,ᄂ,,ᄒ Linked List 2010 2 학기 SANGJI University 1. 리스트개념 리스트 (list) 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : (ᄀ,ᄂ,,ᄒ) 핸드폰의문자메시지리스트

More information

리스트구현방법 배열 (array) 을이용하는방법 구현이간단 삽입, 삭제동작에따른원소이동. 항목의개수제한, 정적기억공간할당. 메모리낭비, 오버플로우 연결리스트 (linked list) 를이용하는방법 구현이복잡 삽입, 삭제가효율적 크기가제한되지않음 Lecture 03_Li

리스트구현방법 배열 (array) 을이용하는방법 구현이간단 삽입, 삭제동작에따른원소이동. 항목의개수제한, 정적기억공간할당. 메모리낭비, 오버플로우 연결리스트 (linked list) 를이용하는방법 구현이복잡 삽입, 삭제가효율적 크기가제한되지않음 Lecture 03_Li Linked List 2011 2 학기 SANGJI University 리스트 (list) 1. 리스트개념 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : (ᄀ,ᄂ,,ᄒ) 핸드폰의문자메시지리스트

More information

CH06)자료구조.hwp

CH06)자료구조.hwp 자료구조 (Data Structure) ) 자료구조의정의 프로그램에서사용하기위한자료를저장매체에저장하는방법및각자료간의관계, 처리방법을분석하는이론 자료의표현과연산의기초과학이다. 일련의자료들을조직화, 구조화시킨다. 모든자료구조에대하여연산처리가가능하다. 구현된자료구조에따라프로그램실행시간이다르다. 2) 자료구조의목적 ( 이유 ) 실제적으로물리적인저장장치는일정한규칙으로하나의선형형태로존재하기때문에그특성에맞게적절한형태로

More information

Algorithms

Algorithms 자료구조 & 알고리즘 리스트 (List) Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 선형리스트 연결리스트 2 선형리스트 선형리스트 선형리스트의개념 선형리스트의구현 연결리스트 3 선형리스트개념 리스트 (List) 목록, 대부분의목록은도표 (Table) 형태로표시 추상자료형리스트는이러한목록또는도표를추상화한것

More information

Microsoft PowerPoint - chap4_list

Microsoft PowerPoint - chap4_list Chap. 4 : 리스트 (list) 2007 학년도 2 학기 리스트 1. 리스트개념 ~ 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 ~ 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 ~ 요일 : ( 일요일, 월요일,, 토요일 ) ~ 한글자음의모임 : (ᆨ,ᆫ,,ᄒ) ~ 핸드폰의문자메시지리스트

More information

chap x: G입력

chap x: G입력 재귀알고리즘 (Recursive Algorithms) 재귀알고리즘의특징 문제자체가재귀적일경우적합 ( 예 : 피보나치수열 ) 이해하기가용이하나, 비효율적일수있음 재귀알고리즘을작성하는방법 재귀호출을종료하는경계조건을설정 각단계마다경계조건에접근하도록알고리즘의재귀호출 재귀알고리즘의두가지예 이진검색 순열 (Permutations) 1 장. 기본개념 (Page 19) 이진검색의재귀알고리즘

More information

중간고사 (자료 구조)

중간고사 (자료 구조) Data Structures 215 중간고사 문제에서명시적으로기술하지않은부분은교재의내용에근거함. 215. 1. 27. 1 다음용어에대하여간단하게설명하시오 ( 각 3 점 *1=3 점 ) 1 abstract data type 6 Circular linked list 2 recursion 3 time complexity 4 space complexity 5 Single

More information

09J1_ _R.hwp

09J1_ _R.hwp 상수삽입전이시간을가지는양단우선순위큐 217 DOI: 10.3745/KIPSTA.2009.16-A.3.217 상수삽입전이시간을가지는양단우선순위큐 정해재 요 약 우선순위큐는스케줄링, 정렬, 유전자검색과같은우선순위에따른검색, 최단거리계산과같은응용에사용될수있다. 본논문에서제안하는배열을이용한양단우선순위큐자료구조는삽입과삭제연산에각각 O(1) 전이시간과 O(logn) 시간이걸린다.

More information

제 9 장 우선순위 큐

제 9 장 우선순위 큐 제 9 장 우선순위큐 Copyright 007 DBLAB, Seoul National University 한쪽끝과양쪽끝우선순위큐 우선순위큐 (priority queue) - 각원소가연관된우선순위를갖고있는원소들의모임 최소우선순위큐에서의연산 - SP: 최소우선순위를가진원소의반환 - SP: 임의의우선순위를가진원소의삽입 - SP3: 최소우선순위를가진원소의삭제 최대우선순위큐에서의연산

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 C 언어포인터정복하기 16 강. 포인터로자료구조화하기 TAE-HYONG KIM COMPUTER ENG, KIT 2 학습내용 구조체멤버와구조체포인터멤버 다른구조체 ( 변수 ) 를가리키는구조체 ( 변수 ) 연결된리스트 의구성및관리 포인터로 연결된리스트 탐색하기 3 중첩구조체에자료저장하기 중첩된구조체변수에값저장하기 struct person { char PRID[15];

More information

Microsoft PowerPoint - 자료구조2008Chap06

Microsoft PowerPoint - 자료구조2008Chap06 제 6 장연결리스트 연결리스트개요 2 일정한순서를가지는데이터요소들을표현하는방법중의하나이다. 배열과다르게데이터요소들의논리적인순서만유지되고기억장소내에서는각데이터요소들은논리적인순서와는상관없는임의의위치를가지도록하는자료구조이다. 연결리스트에서는각데이터요소들이기억장소내의어떤위치에어떤항목이있는지를표시해주어야한다. 이를위해데이터요소에는데이터값 (value) 뿐만아니라위치정보

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

쉽게 배우는 알고리즘 강의노트

쉽게 배우는 알고리즘 강의노트 쉽게배우는알고리즘 장. 정렬 Sorting http://www.hanbit.co.kr 장. 정렬 Sorting 은유, 그것은정신적상호연관성의피륙을짜는방법이다. 은유는살아있다는것의바탕이다. - 그레고리베이트슨 - 2 - 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고,

More information

Lab 5. 실습문제 (Double linked list)-1_해답.hwp

Lab 5. 실습문제 (Double linked list)-1_해답.hwp Lab 5. Doubly-linked list 의구현 실험실습일시 : 2009. 4. 13. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 19. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Doubly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Doubly-linked list의각함수를구현한다.

More information

chap x: G입력

chap x: G입력 원형큐 (Circular Queue) [2] [3] [2] [3] [1] [4] [1] [4] [0] [5] front = 0, rear = 0 [2] [3] [0] [5] front = 0, rear = 3 [1] [4] [0] [5] front = 0, rear = 0 최대큐이용률 = MAX_Q_SIZE 1 3 장. 스택과큐 (Page 13) 원형큐의구현

More information

01장.자료구조와 알고리즘

01장.자료구조와 알고리즘 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 자료구조와알고리즘 1/30 자료구조 일상생활에서자료를정리하고조직화하는이유는? 사물을편리하고효율적으로사용하기위함 다양한자료를효율적인규칙에따라정리한예 2/30 컴퓨터에서의자료구조 자료구조 (Data Structure) 컴퓨터에서자료를정리하고조직화하는다양한구조

More information

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7> 제14장 동적 메모리 할당 Dynamic Allocation void * malloc(sizeof(char)*256) void * calloc(sizeof(char), 256) void * realloc(void *, size_t); Self-Referece NODE struct selfref { int n; struct selfref *next; }; Linked

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070> /* */ /* LZWIN.C : Lempel-Ziv compression using Sliding Window */ /* */ #include "stdafx.h" #include "Lempel-Ziv.h" 1 /* 큐를초기화 */ void LZ::init_queue(void) front = rear = 0; /* 큐가꽉찼으면 1 을되돌림 */ int LZ::queue_full(void)

More information

쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table

쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table 쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table http://academy.hanb.co.kr 6장. 해시테이블 테이블 Hash Table 사실을많이아는것보다는이론적틀이중요하고, 기억력보다는생각하는법이더중요하다. - 제임스왓슨 - 2 - 학습목표 해시테이블의발생동기를이해한다. 해시테이블의원리를이해한다. 해시함수설계원리를이해한다. 충돌해결방법들과이들의장단점을이해한다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information