Introduction to control structure in C Programming Language include decision making (if statement, if..else statement, if...else if...else statement, nested if...else statement, switch...case statement), Loop(for loop, while loop, do while loop, nested loop) and using keyword(break, continue and goto)
Introduction to control structure in C Programming Language include decision making (if statement, if..else statement, if...else if...else statement, nested if...else statement, switch...case statement), Loop(for loop, while loop, do while loop, nested loop) and using keyword(break, continue and goto)
11. The Solution – Step 1 3 1 2 4 5 {1} {2} {3} {4} {5} 모든 원소가 자신이 속한 집합의 대표값
12. The Solution – Step 2 3 1 2 4 5 {1, 2} {3} {4} {5} 집합 1, 2가 합쳐진 집합의 대표값은2
13. The Solution – Step 3 3 1 2 4 5 {1, 2} {3} {4, 5} 집합 4, 5가 합쳐진 집합의 대표값은5
14. The Solution – Step 4 3 1 2 4 5 {1, 2, 4, 5} {3} 집합 {1, 2}, {4, 5}가 합쳐진 집합의 대표값은5
15. The Solution Q: 원소 a와 원소 b가 같은 집합에 있는지 확인하는 방법은? 3 1 2 4 5 A: 원소가 속한 집합의 대표값을 비교한다! 같으면 O 다르면 X
16. Basic Functions 1. CREATE_SET(x) 원소 x를 유일한 원소로 갖는 집합 생성 2. MERGE_SETS(x, y) x가 속한 집합과 y가 속한 집합을 통합 3. FIND_SET(x) x가 속한 집합의 대표값 또는 그에 대한 포인터를 리턴
17. Basic Functions Pseudo Code Read N; for (each person x from 1 to N) CREATE-SET(x); for (each pair of friends (x y) ) if (FIND-SET(x) != FIND-SET(y)) MERGE-SETS(x, y);
18. LL Implementation 원소 하나가 한 개의 노드 각 노드는대표 노드를 가리키는 포인터와 다음 노드를 가리키는 포인터를 갖는다. 1 1 2 2 {1} ← {2} Merge의 경우
19. LL Implementation 다수의 원소를 갖는 집합끼리의 Merge는? 한 집합의 대표노드를 그대로 다른 집합의 꼬리 노드에Append (즉, 앞 집합의 꼬리 노드의Next 포인터를 뒷 집합의 대표 노드로 이어줌) 뒷 집합에 속한 각 노드의 대표 노드 포인터를 모두 앞 노드의 대표 노드로 이어준다.
23. Root Trees Implementation 원소 하나 당 노드 하나 각 노드는 원소 값과 부모 노드에 대한 포인터를 갖는다. 루트 노드== 대표 노드 LL Impl.과의 차이점: 대표 노드 포인터와 Next 포인터가 사라지고 대신 Prev포인터(부모 포인터)가 생겼다.
24. Root Trees Impl. – Step 1 for(int i = 1; i <= 5; i++) CREATE_SET(i);