数据结构
rens111
这个作者很懒,什么都没留下…
展开
-
图数据结构的两种实现方式
一、 使用矩阵实现图结构使用一个数组放置搜有顶点;使用一个二维数组放置所有的边, 二维数组的两个下标指示边的两个顶点:#include <stdio.h>#include <stdlib.h>#define MAXVEX 100#define INFINITY 65535typedef char VertexType;typedef int EdgeType;typedef struct MGraph { VertexType vexes[MAXVEX];原创 2020-07-04 22:58:24 · 690 阅读 · 0 评论 -
不相交集(并查集)
不相交集是解决等价问题的一种有效的数据结构。一、等价关系等价关系定义如下:1) 自反性:对于所有的a属于集合S, a与a有关系;2) 对称性:如果a与b 有关系, 则b与a 有关系;3) 传递性:如果a有b 有关系, b与c有关系, 则a 与 c 有关系;在不想交集类中, 所有具有等价关系的类都在一个集合中,称为等价类; 不同的集合之间不存在等价关系;为确定a 和 b是否具有关系, 我们只需要确定a 和 b 是否属于同一个等价类中;一开始, 输入数据是N个数据, 每一个数据就是一个等价类(每原创 2020-07-04 18:37:16 · 1626 阅读 · 0 评论 -
简单的优先队列(C语言实现)
#include <stdio.h>#include <stdlib.h>#define N 16int arr[N];int len;inline int leftChild(int i) { return 2 * i + 1;}inline int Parent(int i) { if (i < 1) return -1; //当i == 0的时候,返回-1表示出错, 否则push函数的while循环会死循环 return (i - 1) /原创 2020-06-28 23:07:43 · 615 阅读 · 0 评论 -
排序算法实现总结
一、快速排序1) 实现一:当将arr的第一个元素作为标准key, 需要从arr的尾端先做比较,这是因为作为标准的key,在函数partition的循环过程中一直在被移动,直到i == j的时候,key的值才固定。如果从arr首端开始比较,会出现错误;此函数实现使用了swap函数;void swap(int* a, int* b) { int tmp = *a; *a = *b; *b = tmp;}int partition(int *arr, int i, int j) { int k原创 2020-06-27 19:01:30 · 266 阅读 · 0 评论