资源简介
图的邻接矩阵存储和邻接表存储 代码完整 有注释
代码片段和文件信息
#include
#include
#define MAXVEX 100
typedef char VertexType[3];
typedef struct edgenode
{
int adjvex; /*邻接点序号*/
int value; /*边的权值*/
struct edgenode *next; /*下一条边的顶点*/
} ArcNode; /*每个顶点建立的单链表中结点的类型*/
typedef struct vexnode
{
VertexType data; /*结点信息*/
ArcNode *firstarc; /*指向第一条边结点*/
} VHeadNode; /*单链表的头结点类型*/
typedef struct
{
int ne; /*n为实际顶点数e为实际边数*/
VHeadNode adjlist[MAXVEX]; /*单链表头结点数组*/
} AdjList; /*图的邻接表类型*/
int CreateAdjList(AdjList *&G) /*建立有向图的邻接表*/
{
int ibtw;
ArcNode *p;
G=(AdjList *)malloc(sizeof(AdjList));
printf(“顶点数(n)边数(e):“);
scanf(“%d%d“&G->n&G->e);
for (i=0;in;i++)
{
printf(“ 序号为%d的顶点信息:“ i);
scanf(“%s“G->adjlist[i].data);
G->adjlist[i].firstarc=NULL;
}
for (i=0;ie;i++)
{
printf(“ 序号为边=>“i);
printf(“ 起点号 终点号 权值:“);
scanf(“%d%d%d“&b&t&w);
if (bn && tn && w>0)
{
p=(ArcNode *)malloc(sizeof(ArcNode)); /*建立*p结点*/
p->value=w;p->adjvex=t;
p->next=G->adjlist[b].firstarc; /**p插入到adjlist[b]的单链表之首*/
G->adjlist[b].firstarc=p;
}
else
{
printf(“输入错误!\n“);
return(0);
}
}
return(1);
}
void DispAdjList(AdjList *G)
{
int i;
ArcNode *p;
printf(“图的邻接表表示如下:\n“);
for (i=0;in;i++)
{
printf(“ [%d%3s]=>“iG->adjlist[i].data);
p=G->adjlist[i].firstarc;
while (p!=NULL)
{
printf(“(%d%d)->“p->adjvexp->value);
p=p->next;
}
printf(“∧\n“);
}
}
void main()
{
AdjList *G;
CreateAdjList(G);
DispAdjList(G);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1249 2006-07-16 15:01 creatematix.cpp
文件 1732 2006-09-07 14:25 createadjlist.cpp
----------- --------- ---------- ----- ----
2981 2
- 上一篇:摩托罗拉芯片详细介绍大全
- 下一篇:杨素行第三版模电答案
评论
共有 条评论