#include<iostream>
using namespace std;
#define VERTEX_VALUE 5 // 정점의 수
#define EDGE_VALUE 7 // 이음선의 수
/*--------------------------클 래 스 정 의--------------------------------------*/
class Node
{
friend class Kruskal;
private:
int vertexStart; // 출발점
int vertexEnd;// 끝점
int cost; //가중치
Node *link;
};
class Kruskal
{
friend class Node;
private:
Node *first;
Node *last;
public:
Kruskal(){} //생성자
~Kruskal(){} //소멸자
void Input_Data(Kruskal*); // 자료입력
void KruskalRun(Kruskal*,Kruskal*); // 크루스칼 실행!
void Sort(Kruskal*); // 정렬
void Print(Kruskal*,int); // 현재 엣지 출력
int Find(int,int[]); // 해당 정점이 어떤집합에 속하는지 찾아주는것
void Merge(int,int,int[]); // 서로수를 합치는 함수
};
/*-------------------------전 역 변 수 -----------------------------------------*/
Kruskal *E = new Kruskal; // 최소비용 신장트리 구하기전의 트리
Kruskal *F = new Kruskal; // 최소비용 신장트리를 구한 결과
int tree[VERTEX_VALUE][VERTEX_VALUE] = /* 가중치값 */
{
{0, 1, 3, 0, 0},
{1, 0, 0, 6, 0},
{3, 3, 0, 4, 2},
{0, 6, 4, 0, 5},
{0, 0, 2, 5, 0}
}; // 이값은 사용자가 임의로 수정할수있습니다.
/*---------------------------프로그램 시작---------------------------------------*/
int main(void)
{
int a;
Kruskal test; // 크루스칼 돌릴 객체 선언
test.Input_Data(E); // 위 tree의 가중치값들을 객체에 입력합니다.
//test.KruskalRun(E, F); // 크루스칼 알고리즘을 E와 F 트리로 시작합니다.
//cout << \"*** 최소비용 신장 트리 결과 ***\" << endl;
//test.Print(F, VERTEX_VALUE-1); // F 트리의 내용 출력
cin >>a;
return 0;
}
/*-------------------위 전역변수 Tree[][]의 가중치값 신장트리에 입력--------------*/
void Kruskal::Input_Data(Kruskal *e)
{
for(int i=0;i<VERTEX_VALUE;i++)
for(int j=i;j<VERTEX_VALUE;j++)
{
if(tree[i][j] != 0) // 0 이아니면
{
e->first->vertexStart = i;//시작점
e->first->vertexEnd = j; //끝점
e->first->cost = tree[i][j]; //가중치
e->first = e->first->link; //다음 노드로 연결한다.
}
}
}
요게 지금 제가 인터넷에서 찾은 소스를 고치고있는 중인데요
F5로 디버그를 하면 자꾸 무뭐
e->first->vertexStart = i;//시작점
이부분을
액세스를 할수없다고 뜨는데 이거 원인이 뭔지 알수 있을까여..
맨날 프로그레밍 할때마다 저 오류가 뜨는데 맨날 소스를 바꾸다가 해결방법이 있는지 알고싶어서 여쭙니다 형님들
혹시라도 아시는분은 지나치지마시고 답변좀 부탁드리겠습니다 ㅜㅜ
사생활보호 개념 좀
private 이녀나
땜질하ㅕ면 private를 public으로 바꾸면됌