数据结构——图的存储 邻接表
来源:互联网 发布:写作软件app 编辑:程序博客网 时间:2024/05/29 03:49
#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct node{ //定义结点结构 由数据域vertex和指针域next组成 int vertex;struct node *next; }NODE;typedef struct hnode{ //定义头结点结构 由数据域head和 指针域first组成 !!!注意 !!! 指针域类型是node 而不是hnode!!! int head;struct node *first; }HNODE;typedef struct{ //定义邻接表的结构 由头结点数组 和头结点数n边数e组成 !!!注意 !!!头结点数组存放的是头结点 而不是头结点指针!! HNODE list[10]; int n,e;}GRAPH;void create(GRAPH *G); int main(){int i,j;GRAPH *G=(GRAPH *)malloc(sizeof(GRAPH)); //定义一个邻接表的指针 不要忘记分配动态内存单元 create(G); //传入邻接表指针 创建邻接表 for(i=0;i<G->n;i++){printf("%d->",i);while(G->list[i].first!=NULL){printf("%d->",G->list[i].first->vertex);G->list[i].first=G->list[i].first->next;}printf("\n");}return 0;} void create(GRAPH *G){int p,q,i,j,m;NODE *s;printf("请输入定点数n和边数e:"); scanf("%d %d",&G->n,&G->e); for(p=0;p<G->n;p++){printf("请输入头节点:"); //初始化头结点 scanf("%d",&m);G->list[m].head=m;G->list[m].first=NULL;}for(q=0;q<G->e;q++){printf("请输入边Vi Vj:");scanf("%d %d",&i,&j);s=(NODE *)malloc(sizeof(NODE)); s->vertex=j;s->next=G->list[i].first;G->list[i].first=s;s=(NODE *)malloc(sizeof(NODE));s->vertex=i;s->next=G->list[j].first;G->list[j].first=s;}}
运行结果:
阅读全文
0 0
- 数据结构—图的存储—邻接表和邻接矩阵
- 数据结构——图的存储 邻接表
- 数据结构:图的邻接表存储表示
- 【数据结构】图的存储--邻接表
- 图的存储——邻接表
- 数据结构之图的存储结构——动态邻接表
- 再回首,数据结构——图的常用术语,邻接矩阵、邻接表存储结构
- 数据结构实践——操作用邻接表存储的图
- 数据结构实践——操作用邻接表存储的图
- 【第十一周】数据结构实践——操作用邻接表存储的图
- 第11周 项目2 数据结构实践——操作用邻接表存储的图
- 数据结构第十一周项目(二)——操作用邻接表存储的图
- 数据结构之图的邻接表存储(参考C博客—研究毛)
- 【自己动手写数据结构】 -- 图的邻接表存储实现
- 数据结构:图的存储结构之邻接表
- 大话数据结构十九:图的存储结构之邻接表
- 数据结构之图的邻接表存储方法
- 数据结构:图的存储结构之邻接表
- Cocos2d-x 中加载骨骼动画资源
- 登录拦截
- Android 属性动画
- JUnit4 中@AfterClass @BeforeClass @after @before的区别对比
- java经典算法-猴子分桃
- 数据结构——图的存储 邻接表
- PHP面向对象三大特性之多态基础
- oracle 语句优化解析
- web页面打开本地App
- 入门级整合ssh框架
- Hibernate
- Activity的启动过程(Android开发艺术探索学习笔记)
- Attributions——属性控件
- H5直播避坑指南