반응형

개발/C,C++ 6

[C++] iterator에 대하여 (반복자)

🟡 반복자의 정의 반복자 : 컨테이너의 한 지점을 가리키는 객체. 컨테이너의 종류와 내부 구조에 상관없이 한 요소를 가리키는 목적으로 반복자라는 동일한 장치를 일관된 방법으로 사용할 수 있다. 컨테이너에 대해 알고리즘을 적용하는 등 저장된 요소에 접근해야할 때는 반복자가 필요하다. 즉 반복자가 알고리즘과 컨테이너의 연결 매개체로 존재한다. 그리고 반복자를 통해서 여러 종류의 컨테이너를 동일한 알고리즘을 적용해서 사용할 수 있다. 그에 대한 예시로 STL 알고리즘에서는 container 정보가 아니라 iterator 정보만을 전달해서 사용하도록 하고 있다. 🟡 STL 알고리즘과 컨테이너를 잇는 '반복자' stl 알고리즘이 받는 반복자는 단일 요소보다는, 반복자 구간을 받아들여서 구간 내의 모든 요소에 대해..

개발/C,C++ 2023.06.12

[알고리즘]최소신장트리 (MST)구현하기 - C로구현하기

*신장 부 그래프: 그래프 G의 모든 정점들을 포함하는 부그래프. * 신장트리: (자유)트리인 신장 부그래프. 최소신장트리 Minimum spanning tree: G의 신장트리 가운데 간선 무게의 합이 최소인 것. -통신망, 교통망 등의 설계에 자주 응용된다. * 최소신장트리의 속성 * 사이클 속성 (없음) * 분할 속성 * 최소신장트리 구하는 알고리즘 *탐욕법 초기구성으로부터 시작하여 부분적인 향상을 계속함으로써 전체 최적해를 찾을 수 있는 문제들 탐욕적 선택 속성을 가진 경우에만 탐욕해가 최적해가 된다. *prim 알고리즘 해석 : 단순연결 무방향 가중 그래프 G에 대한 최소신장트리를 계산한다. 그래프의 임의의 정점 s를 택하여 s로부터 시작하여 정점들을 배낭에 넣어가며 배낭안에서 MST, 즉 최소..

개발/C,C++ 2022.12.17

C - 인접행렬로 그래프 구현하기 (알고리즘)

#include #include #include //인접 행렬로 그래프 표현하기 /* 함수 기능 명세 [public] Makegraph : 문제에서 요구하는 대로 그래프를 완성한다. makeEdge : 두 노드를 받아, 맞게 vertex 를 표현한다. print_graph : 그래프에서 한 노드에 연결된 인접 행렬을 모두 표시한다. modify_weight : 노드 간의 vertex의 weight를 조정하되, 없으면 만들고 0이면 삭제한다. 0일 때: delete_vertex 0이 아닐 떄: 양쪽으로 modify_weight_utils [private] modify_weight_utils : 한쪽으로 node1에서 node2를 지운다 . */ void makeEdge(int (* graph)[7], in..

개발/C,C++ 2022.12.16

해쉬테이블 구현하기(C, C언어)

// // Created by Eun jung Bang on 2022/12/15. // 해쉬에서 충돌이 일어났을 때 해결하는 방법 해쉬 충돌: 두 개 이상의 원소들이 동일한 셀로 매핑되는 경우. 1. 분리 연쇄법 리스트를 이용해서 해당 셀에 이어서 연결한다. 2. 개방 주소 법 a. 선형 조사법: 바로 비어있는 다음 셀에 저장한다. (h(k) +i) . 1차 군집화의 위험 b. 2차 조사법: 제곱만큼 넘어가서 다음 셀에 저장 (h(k) + i^2),. 절반 이상 차면 버켓이 비어있어도 찾기 어려워짐. c. 이중 해싱: 다른 해싱 함수의 값만큼 넘어가서 다음 셀에 저장. (h(k) + i * h'(k)).h'의 개산 결과가 0이 아니어야 하고 m과 h'가 서로소. 개방주소법 알고리즘 Alg findElem..

개발/C,C++ 2022.12.16

이진트리 메소드 구현하기

중복 키가 없는 이진트리 구현하기 1. 메쏘드 i : key 입력 받은 후 트리에 삽입 d : key 입력 받은 후 해당 노드가 있다면 노드 삭제, 삭제한 키 출력. 없으면 X 출력 s : key 입력 받은 후 해당 노드가 있다면 키를 출력, 없으면 X 출력 p : 트리를 전위 순회로 인쇄. q : 종료 2. 메소드 구현 [public] * findElement(k) : key를 받아서 해당 노드를 찾아 원소를 반환(여기서 원소 = 키) * insertItem(k) : key를 받아서 트리에 해당 키를 가진 노드를 삽입. treesearch , setnode , expandExternal(left), expandExternal(right). * treeSearch(w, k) : (노드, 키) 트리에서 원..

개발/C,C++ 2022.12.15
728x90
728x90