검색어 입력폼

[자료구조]최단경로 검색

등록일 2006.03.26 파일확장자 C언어 (cpp) | 가격 900원

소개글

C++을 이용한 최단경로 검색

컴파일 실행환경

C++

본문내용

#include <iostream.h>

//******graph***************
class graph {
//그래프 클래스
private:
int **length;
int *dist;
bool *s;

public:
graph(int nmax) { //그래프 클래스 생성자
length = new int*[nmax];
for(int i = 0; i<nmax; i++)
{ //2차원행렬을 동적으로 입력받는다
length[i] = new int [nmax];
}
//2차원배열의 각 요소를 큰 수 1000으로 초기화
for (i=0; i<nmax ;i++)
{
for (int j=0; j<nmax ; j++)
{
length[i][j]=1000;
}
}
//dist는 거리가 입력되는 배열, 데이터멤버
//s는 거쳤는지 아닌지를 구분하는 배열, 데이터 멤버
dist=new int[nmax];
s=new bool[nmax];
}
//input() 함수
void input(int);
//최단경로 구하는 함수
void shortestpath(const int, const int);
//그 다음 노드를 구하는 함수
int choose(const int);
};
//input()함수
void graph::input(int nmax)
{
int i,j,menu;
cout<<"0: Input or 1: example"<<endl;
//메뉴를 입력받아서 0이면 입력받고 1이면 예제를 실행
cin>>menu;
if (menu==0) {
int sel;
//입력 받을 수 있는 노드수를 출력
cout<<"node number is ";
for (i=0; i<nmax ;i++)
cout<<i<<" ";
cout<<endl;

while (1) {
cout<<"input the start node : ";
cin>>i;
if (i>=nmax)
{
cout<<"node number is over!!"<<endl;
return;
}
cout<<"input the finish node : ";
cin>>j;
if (j>=nmax)
{
cout<<"node number is over!!"<<endl;
return;
}
cout<<"input the node`s weight : ";
cin>>length[i][j];

cout<<"Continue 1 or End 2"<<endl;
cin>>sel;
if (sel==2)
{
break;
}
}
//인접행렬을 입력받는다.
}
else {
//예제 인접행렬
length[0][1]=50;
length[0][2]=45;
length[0][3]=10;
length[1][2]=10;
length[1][3]=15;
length[2][4]=30;
length[3][0]=20;
length[3][4]=15;
length[4][1]=20;
length[4][2]=35;
length[5][4]=3;
}
//인접행렬을 출력한다.
cout<<"Matrix Is"<<endl;
for (i=0; i<nmax; i++)
{
for (j=0; j<nmax; j++)
{
cout<<" "<<length[i][j];
}
cout<<endl;
}
}

참고 자료

없음
다운로드 맨위로