图的存储方式学习笔记
程序员文章站
2022-04-18 23:17:04
...
结点
结点由数据域和指针域组成
结点只含有一个指针域组成的就是单链表
结点的代码实现就是结构体,数据域里面存储的是结点的数据,指针域存储的就是结构体指针类型的变量。
图形抽像表达数据元素与数据元素之间的逻辑关系如下:
链表一定要有一个头指针也就是链表第一个结点的地址,这样我们就可以找到链表。
头结点的存在就是为了同意代码格式,否则就会单独出现一个指针,如果用结点就可以用结点的数据域去存储其他信息并统一格式。
结构体
/*先定义几类结构体*/
struct str{
int a;
int b;
}str1;
/*这是第一类结构体的形式,有结构体名,有结构体变量*/
struct str2{
int a;
int b;
};
/* 这是第二类结构体的形式,有结构体名,无结构体变量 */
typedef struct {
int a;
int b;
}STR3;
/* 这是第三类结构体的形式,把结构体重定义为STR3 */
typedef struct str4{
int a;
int b;
}STR4;
/*这是第四类结构体的形式,把结构体重定义为STR4,还有结构体名称*/
struct str *p;
p = &str1; /*结构体指针指向结构体变量的地址首地址*/
图的表示
图的表示(建立)有两种方法:
- 邻接矩阵:A(i,j)=1表示i,j存在一条边,顺序存储结构,空间复杂度O(n^2),稠密图。
- 邻接表:只记录存在的边,邻接表是数组(Vector)与链表(List)相结合的数据结构, 稀疏图。
无向图的邻接表是这样的,邻接表有两个部分,一个是顶点表,一个是边表。
顶点表长这样
无向图的邻接表存储例子
在代码层面通过指针向后移动,来实现链表。
结构体指针
循环是有去无回,而递归则是有去有回(因为存在终止条件)。
参考:https://www.cnblogs.com/yellowgg/p/7875459.html
https://pushy.site/categories/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/page/2/
上一篇: 欧拉角表示姿态角
下一篇: Docker数据卷管理
推荐阅读
-
学习编程有做笔记的必要吗?
-
数据库学习笔记3 基本的查询流 2
-
详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
-
[C语言学习笔记五]复合语句和操作符的区分
-
Android学习笔记(Android Studio) 4-2-1~2 Fragment详解(一、二)(不可不会的Activity和Fragment)
-
vue2.0饿了么学习笔记(15)ratingselect组件的实现
-
Android学习笔记(Android Studio) 4-1-2 Activity的生命周期(不可不会的Activity和Fragment)
-
Android学习笔记(Android Studio) 7-1 SharedPreferences 轻量数据存储(数据存储)
-
HTML学习笔记之三(localstorage的使用)_html/css_WEB-ITnose
-
php学习笔记 php中面向对象三大特性之一[封装性]的应用_PHP教程