📄 graphic.h
字号:
#include<iostream.h>
#include<malloc.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAX 20
typedef int status;
typedef char *string;
typedef struct{
string name;
string info;
}VertexType;
typedef struct{
int length;
int ivex,jvex;
}EdgeType;
typedef struct EdgeNode{
EdgeType elem;
struct EdgeNode *ilink,*jlink;
}EdgeNode,*EdgePtr;
typedef struct {
VertexType data;
EdgePtr firstEdge;
}VNode;
typedef struct{
VNode Adjmulist[MAX];
int vexNum,edgeNum;
}GraphType;
void InitGraph(GraphType &g)
{
g.vexNum=g.edgeNum=0;
for(int i=0;i<MAX;i++) g.Adjmulist[i].firstEdge=NULL;
}
status LocateVex(GraphType &g,string uname,int &i)
{
for(i=0;i<=g.vexNum;i++)
if(g.Adjmulist[i].data.name==uname) return TRUE;
return FALSE;
}
void GetVex(GraphType g,int i,VertexType &v)
{
v=g.Adjmulist[i].data;
}
EdgePtr FirstEdge(GraphType g,int vi)
{
return g.Adjmulist[vi].firstEdge;
}
void NextEdge(GraphType g,int vi,EdgePtr p,int &vj,EdgePtr &q)
{
if(p->elem.ivex==vi)
{
q=p->ilink;
vj=p->elem.jvex;
}
else
{
q=p->jlink;
vj=p->elem.ivex;
}
}
void InsertVex(GraphType &g,VertexType v)
{
g.Adjmulist[g.vexNum].data=v;
g.vexNum++;
}
void InsertEdge(GraphType &g,EdgeType e)
{
EdgePtr p;
p=new EdgeNode;
p->elem=e;
p->ilink=FirstEdge(g,e.ivex);
p->jlink=FirstEdge(g,e.jvex);
g.Adjmulist[e.ivex].firstEdge=g.Adjmulist[e.jvex].firstEdge=p;
g.edgeNum++;
}
/*void DeleteVex(GraphType &g,VertextType v)
{
}
/*void DeleteEdge(GraphType &g,EdgeType e)
{
}
*/
void Print_ALGraph(GraphType g)
{
EdgePtr p;
cout<<endl<<"graph is:"<<endl;
for(int i=0;i<g.vexNum;i++)
{
cout<<i<<" | "<<g.Adjmulist[i].data.name;
p=g.Adjmulist[i].firstEdge;
while(p)
{
cout<<p->elem.length<<"ilink -->"<< p->elem.ivex<<"jlink -->"<< p->elem.jvex<<"|" ;
p=p->ilink;
}
cout<<" --> NULL"<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -