邻接表怎么输出

 时间:2024-11-02 10:58:48

1、邻接表是图的常用储存结构之一,它很好的解决了邻接矩阵占用空间较大的问题。邻接表用到了两个结构体,一个是顶点表,包括点的序号和连接此起点的第一条边。一个是边表,包括连接此边的终点和对应之前起点的下一条边。

邻接表怎么输出

2、初始化邻接表时,先将定点表赋值,并把指针指向NULL。再将输入的数据插入,插入到起点所对应的边表的最后一个。最后是每个点对应一个链表,头结点为起点,之后的结点为这个起点所连接的边。

邻接表怎么输出

3、通俗点说就是把每个点所连接的点组合。

邻接表怎么输出

4、#include<stdio.h>#include<malloc.h> #define max 10000int edge[1000000][2]={0};typedef struct _enode //边表 {//int dis; int vex;struct _enode* nextedge;}enode; typedef struct _vnode //点表 {int vex;enode* firstedge;}vnode; typedef struct _pic {int vex_num;int edge_num;vnode node[max];}pic; void find_insert(enode* edge,enode* temp) //插入边 {enode* p;p=edge;while(p->nextedge!=NULL)p=p->nextedge;p->nextedge=temp;} pic* create_pic() //创建表 {int i=0,c1,c2;enode* node_temp;pic* picture;picture=(pic*)malloc(sizeof(pic));picture->edge_num=5;picture->vex_num=3; //5条边,3个点 for(i=1;i<=picture->vex_num;i++) {picture->node[i].vex=i;picture->node[i].firstedge=NULL;} for(i=1;i<=picture->edge_num;i++){c1=edge[i][0];c2=edge[i][1];node_temp=(enode*)malloc(sizeof(struct _enode));node_temp->vex=c2;node_temp->nextedge=NULL; //开辟空间之后一定要给每一个元素赋值,NULL也要赋值 if(picture->node[c1].firstedge==NULL){picture->node[c1].firstedge=node_temp;}else{find_insert(picture->node[c1].firstedge,node_temp);}}return picture;} int main(void){int i=0;pic* picture;for(i=1;i<=5;i++) //输入五条边 {scanf("%d",&edge[i][0]);scanf("%d",&edge[i][1]);}picture=create_pic();for(i=1;i<=picture->vex_num;i++) //输出 {enode* p;p=(enode*)malloc(sizeof(enode));if(picture->node[i].firstedge==NULL)printf("error");else{p=picture->node[i].firstedge;printf("%d ",picture->node[i].vex);while(p!=NULL){printf("%d ",p->vex);p=p->nextedge;}}printf("\n");}return 0; }

邻接表怎么输出

5、输入每条边两个端点的序号,输出每个点所连接的点。下图为运行结果

邻接表怎么输出

6、以上 感谢采纳

邻接表怎么输出
  • 造梦西游3修改大师豪华版教程
  • 在Excel单元格中怎么快速一键批量输入!
  • 造梦西游3桌面版怎么下载
  • 造梦西游3混元雷叉怎么得
  • 造梦西游3升级攻略#校园分享#
  • 热门搜索
    感恩手抄报内容 环保小卫士手抄报 关于消防的手抄报 中国梦手抄报图片 小学生端午节手抄报 六一手抄报 名人名言手抄报 有关清明节的手抄报 大自然手抄报 一二年级消防手抄报