73_十字链表

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*************有向图的十字链表*************/
#define MAX_VERTEX_NUM 20
typedef struct ArcBox
{ int tailvex, headvex; // 该弧的尾和头顶点的位置
struct ArcBox *hlink, *tlink;
// 分别指向下一个弧头相同和弧尾相同的弧的指针域InfoType *info; // 该弧相关信息的指针
} ArcBox;
typedef struct VexNode
{ VertexType data;
ArcBox *firstin, *firstout;
// 分别指向该顶点第一条入弧和出弧
} VexNode;
typedef struct
{ VexNode xlist[MAX_VERTEX_NUM]; // 表头向量
int vexnum, arcnum; // 有向图的当前顶点数和弧数} OLGraph;
Status CreateDG (OLGraph &G)
{ int i,j,k,w,IncInfo;
char v1,v2,V;
ArcBox *p;
printf ("input the number for vexnum and arcnum");
scanf ("%d,%d",&G.vexnum , &G.arcnum);
IncInfo=0;IncInfo=IncInfo;
V=getchar(); //skip the enter ,same as next...
printf("input %d char for vexs \n",G.vexnum);
for(i=0; i<G.vexnum; ++i) //输入顶点
{ G.xlist[i].data=getchar(); V=getchar(); }
for(i=0; i<G.vexnum; ++i) //初始化表头
{ G.xlist[i].firstin=NULL; G.xlist[i].firstout=NULL;}
printf("input %d arc(char,char) \n",G.arcnum); //输入边 for(k=0; k<G.arcnum; ++k)
{ printf("%d:\n ",k);
scanf("%c,%c",&v1,&v2);
V=getchar(); V=V;
i=LocateVex(G,v1); j=LocateVex(G,v2);
if(i !=100 && j !=100)
{ p= (ArcBox*)malloc(sizeof(ArcBox));
p->tailvex=i; p->headvex=j;
p->hlink = G.xlist[j].firstin;
p->tlink = G.xlist[i].firstout;
G.xlist[j].firstin = G.xlist[i].firstout=p;
} //if
} //for
return OK; }。

相关文档
最新文档