크루스칼 알고리즘 구현 질문입니다.
연체리
크루스칼 알고리즘 구현 질문입니다.kruskal 알고리즘을 구현했는데 코드 중간에 호출하는 find 함수 인자 값을 어떻게 받아서 넘길줄 모르겠네요 ㅠ질문 내용 :
일단 구조체 선언은
typedef struct node *ptr_node;
typedef struct node{
int vertex;
int cost;
ptr_node link;
}node;
//minheap을 위한 구조체
typedef struct{
int vertex1;
int vertex2;
int cost;
}weightededge;
ptr_node graph[max_vertex];
int totaledges;//minheap에 삽입된 edge의 수
int totalvertex;//graph의 총 vertex 수
이렇게 했구요~
크루스칼 알고리즘은...
void kruskal(int totalvertex)
{
int start_root;
int last_root;
int i = 0;
weightededge select;
while(totaledges 0 && totalvertex max_vertex - 1){
select=deleteminheap(&totaledges,minheap);
start_root = find(select.vertex1);
last_root = find(select.vertex2);
if(start_root != last_root){
printf(%d - %d\n, select.vertex1, select.vertex2);
unionvertexsets(start_root, last_root);
totalvertex++;
}
}
if(totalvertex max_vertex-1)
printf(no spanning tree\n);
}
이렇게 했습니다. 근데 자꾸 실행화면에서 오류가나서요.....
오류가 나는 부분은
start_root = find(select.vertex1);
last_root = find(select.vertex2); 이곳의 select.vertex1과 2 부분에 이상한 값이 들어가서인거
같아요. 아 이거 진짜 사람 짱나게 해서 제발 답변좀 해주세요....ㅠㅠ
그리고 start_loot와 last_root에서도 이상한 값이 들어가네요.