#include<stdio.h>
typedef char vertextype;
typedef int edgetype;
#define maxsize 100
#include<stdlib.h>
typedef struct edgenode
{
int adjvex;//邻接表的结点下标
struct edgenode* next;//指向下一个顶点的指针
}edgenode;
typedef struct vertexnode
{
int data;//顶点的数据域
edgenode* firstchild;//指向边表第一个结点的指针
}vertexnode;
typedef struct graph
{
vertexnode arc[maxsize];
int numedge, numnode;//顶点结点,边表
}graph;
void init(graph* G)
{
printf(“请输入顶点结点和边表的个数\n”);
scanf_s("%d%d", &G->numnode, &G->numedge);
printf(“图的初始化工作完毕\n”);
}
//建立
void create(graph* G)
{
int i,j,k,m;
printf(“请输入顶点表\n”);
for (m = 0; m < G->numnode; m++)
{
scanf_s("%d", &G->arc[m].data);
G->arc[m].firstchild = NULL;
}
for (k = 0; k < G->numedge; k++)
//循环条件不可以用i和j,因为内部已经使用了
//循环的截止条件已经为numedge,而不是numnode
{
edgenode* e=(edgenode*)malloc(sizeof(edgenode));
printf(“请输入边(vi,vj)的边的下标i,j”);
scanf_s("%d%d", &i, &j);
e->adjvex = j;
e->next = G->arc[i].firstchild;
G->arc[i].firstchild = e;
e = (edgenode*)malloc(sizeof(edgenode));
e->adjvex = i;
e->next = G->arc[j].firstchild;
G->arc[j].firstchild = e;
}
printf(“图的创建已完毕\n”);
}
int main(void)
{
graph* G =(graph*)malloc(sizeof(graph));
init(G);
create(G);
system(“pause”);
return 0;
}
邻接表的创建 c语言 数据结构 超详细~~
最新推荐文章于 2023-06-01 16:24:00 发布