
数据结构
cy320h
不知道你在想什么
展开
-
顺序表
线性表中的顺序存储结构,实现各种基本运算 头文件:list.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明; 源文件:list.cpp,包含实现各种算法的函数的定义 #ifndef LIST_H_INCLUDED#define LIST_H_INCLUDED#define MaxSize 50typedef int ElemType;typede原创 2018-01-04 19:18:00 · 380 阅读 · 2 评论 -
单链表
1.头文件:linklist.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef LINKLIST_H_INCLUDED#define LINKLIST_H_INCLUDEDtypedef int ElemType;typedef struct LNode //定义单链表结点类型{ ElemType data; struct原创 2018-01-04 20:38:56 · 324 阅读 · 0 评论 -
双链表
1.头文件:dlinklist.h,包含定义双链表数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef DLINKLIST_H_INCLUDED#define DLINKLIST_H_INCLUDEDtypedef int ElemType;typedef struct DNode //定义双链表结点类型{ ElemType data; stru原创 2018-01-04 21:07:18 · 271 阅读 · 0 评论 -
KMP算法
从头到尾彻底理解KMP 2. 暴力匹配算法 假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢? 如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有:如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符;如果失配(即S[i]! = P[j]),令...转载 2018-03-29 18:37:05 · 187 阅读 · 0 评论 -
普里姆算法
算法思想:可取图中任意一个顶点V作为生成树的根,之后若要往生成树上添加顶点W,则在顶点V和W之间必定存在一条边。并且该边的权值在所有连通顶点V和W之间的边中取值最小。一般情况下,假设n个顶点分成两个集合:U(包含已落在生成树上的结点)和V-U(尚未落在生成树上的顶点),则在所有连通U中顶点和V-U中顶点的边中选取权值最小的边 C语言代码如下:[cpp] view plain copy//最小生成树...原创 2018-04-07 13:00:19 · 3234 阅读 · 0 评论 -
堆排序
堆排序实例首先,建立初始的堆结构如图: 然后,交换堆顶的元素和最后一个元素,此时最后一个位置作为有序区(有序区显示为黄色),然后进行其他无序区的堆调整,重新得到大顶堆后,交换堆顶和倒数第二个元素的位置…… 堆排序分析 堆排序方法对记录数较少的文件并不值得提倡,但对n较大的文件还是很有效的。因为其运行时间主要耗费在建初始堆和调整建新堆时进行的反复“筛选”上。 堆排...原创 2018-06-06 21:06:23 · 196 阅读 · 0 评论 -
数据结构小结
最近在复习,所以就在这写下所有数据结构的理解1.线性表: 零个或多个数据元素的有限序列; 元素之间是有序的,若有多个元素,则第一个元素只有后继,最后一个只有一个前驱,中间元素有一个前驱和一个后继。 线性表是有限的; 线性存储的要素: 1.存储空间的起始位置 2.线性表的最大容量 3.线性表的当前长度它的存取性...原创 2018-08-12 10:31:20 · 583 阅读 · 0 评论 -
数据结构小结2
1.查找 根据某个给定的值,在查找表中确定一个其关键字等于给定值的元素。 关键字:是数据元素中某个数据项的值,又叫键值。也可以标识一个记录的某个数据项(字段),我们称为关键码; 》1.顺序查找 又称为线性查找,最基本的查找技术。 从头开始逐一与数据元素进行比较 可以设置哨兵,来避免每次都要检查数组越界 O(n)》2.有序表查找 折半查找:又叫二分查找。前提必须是...原创 2018-08-15 09:49:40 · 296 阅读 · 0 评论