데이터 구조그림토폴로지 정렬
#include<iostream>
using namespace std;
#define MAX_VEX_NUM 20
class ArcNode//
{
public:
ArcNode();
int tailnode;
ArcNode *next;
};
ArcNode::ArcNode()
{
next=NULL;
}
class VexNode//
{
public:
VexNode();
char name;
int indegree;
ArcNode *firstarc;
};
VexNode::VexNode()
{
indegree=0;
firstarc=NULL;
}
class VexBox//
{
public:
VexBox();
VexNode vexbox[MAX_VEX_NUM];
int vexnum;
};
VexBox::VexBox()
{
vexnum=0;
}
class TPSort//
{
public:
void GetTPSquence();//
private:
void GetVex();//
void GetArc();//
void TPSorting();//
VexBox v;
};
void TPSort::GetTPSquence()//
{
GetVex();//
GetArc();//
TPSorting();//
}
void TPSort::GetVex()//
{
cout<<"Please Input The Name Of Each Vertex :"<<endl<<endl;
char name;
while(cin>>name)
{
v.vexbox[v.vexnum++].name=name;
}
cin.clear();
}
void TPSort::GetArc()//
{
cout<<"Please Input The Tail And Head Of Each Arc :"<<endl<<endl;
int vex1,vex2;
ArcNode *newnode,*p;
while(cin>>vex1>>vex2)
{
newnode=new ArcNode;
newnode->tailnode=vex2;
v.vexbox[vex2].indegree++;
if((p=v.vexbox[vex1].firstarc)==NULL)
{
v.vexbox[vex1].firstarc=newnode;
}
else
{
while(p->next!=NULL)
p=p->next;
p->next=newnode;
}
}
cin.clear();
}
void TPSort::TPSorting()//
{
int count=0;
bool find=false;
ArcNode *p;
while(1)
{
for(int i=0;i<v.vexnum;i++)
{
if(v.vexbox[i].indegree==0)//
{
v.vexbox[i].indegree--;
cout<<v.vexbox[i].name<<endl;
find=true;
count++;
p=v.vexbox[i].firstarc;
while(p!=NULL)//
{
v.vexbox[p->tailnode].indegree--;
p=p->next;
}
break;
}//if
}//for
if(find==false)
break;
else
find=false;
}//while
if(count==v.vexnum)
cout<<"This Is A Acycline Graph :"<<endl<<endl;//
else
cout<<"This Is A Cycling Graph :"<<endl<<endl;//
}//TPSorting
"main.cpp"
#include"head.h"
int main()
{
TPSort tp;
tp.GetTPSquence();
system("pause");
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.