C语言实现图的十字链表(完整代码)

阅读: 评论:0

C语言实现图的十字链表(完整代码)

C语言实现图的十字链表(完整代码)

今天我们用c语言将下面的图用代码表示出来。

像下图那样先定义一些结构体

typedef struct  Bow			//定义弧
{char head,tail;struct Bow *hlink,*tlink;
}Bow;typedef struct FirstNode		//定义头结点
{char data;Bow *firIn;Bow *firOut;
}FirstNode;typedef struct			//记录顶点的数量和弧的数量,先定义100顶点
{FirstNode list[100];int peak,edge;
}total;

完整代码如下:

#include<stdio.h>
#include<stdlib.h>#define ERROR 0typedef struct  Bow
{char head,tail;struct Bow *hlink,*tlink;
}Bow;typedef struct FirstNode
{char data;Bow *firIn;Bow *firOut;
}FirstNode;typedef struct
{FirstNode list[100];int peak,edge;
}total;int LocalBow(char data,total *G)				//查询顶点的位置
{int i;for(i=0;i<G->peak;i++){if(G->list[i].data==data){return i;}}return ERROR;
}void create(total *G)							//创建十字链表
{char x,y;int k,j,i;printf("请输入图的顶点和弧的数量:");scanf("%d %d",&G->peak,&G->edge);for(i=0;i<G->peak;i++){fflush(stdin);printf("请输入第%d个顶点的值:",i+1);scanf("%c",&G->list[i].data);G->list[i].firIn=G->list[i].firOut=NULL;}for(i=0;i<G->edge;i++){fflush(stdin);printf("请输入<vi,vj>,中间用英文逗号隔开:");scanf("%c,%c",&x,&y);Bow *R=(Bow *)malloc(sizeof(Bow));k=LocalBow(x,G);j=LocalBow(y,G);R->head=x;R->tail=y;R->hlink=G->list[j].firIn;R->tlink=G->list[k].firOut;G->list[j].firIn=R;G->list[k].firOut=R;}
}
int main()
{total G;Bow *t;create(&G);int i;for(i=0;i<G.peak;i++){printf("%c顶点出度情况为:n",G.list[i].data);t=G.list[i].firOut;if(!t)	printf("无");while(t){printf("%c->%c ",t->head,t->tail);t=t->tlink;}printf("n");t=G.list[i].firIn;printf("%c顶点入度情况为:n",G.list[i].data);if(!t)		printf("无");while(t){printf("%c->%c ",t->head,t->tail);t=t->hlink;}printf("n");}return 0;
}

运行结果如下:

本文发布于:2024-01-28 01:40:27,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063772353899.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:链表   完整   语言   代码
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23