数据结构与算法分析
碣石观海
幸甚至哉,歌以咏志
展开
-
数据结构之稀疏矩阵(C++)
C++ Code : SMatrix.h123456789101112131415161718192021222324252627282930#pragma once/* 稀疏矩阵类 SMatrix (Sparse Matrix)*/const int MaxSize = 1000; //定义常量MaxSize,表示矩阵中非零数据元素个数的最大值typedef int ElemType...原创 2018-05-13 22:45:31 · 9531 阅读 · 2 评论 -
数据结构之图的应用(最小生成树之Prim算法实现)(C++)
最小代价生成树的3条构造准则:1).只能使用网络中的边来构造最小生成树;2).能且只能使用 n-1 条边来连接网络中的 n 个顶点;3).选用的 n-1 条边不能产生回路。一、Prim算法简介基本思想:给定任意一带权连通网络 N={V,E},T={U,TE}是N的最小生成树(生成树也是图)。1.算法始终将顶点集合V分成没有元素重叠的两部分,U 和 V-U;2.生成树T的...原创 2018-07-19 00:04:29 · 4248 阅读 · 0 评论 -
数据结构之图的应用(最小生成树之Kruskal算法实现)(C++)
最小代价生成树的3条构造准则:1).只能使用网络中的边来构造最小生成树;2).能且只能使用 n-1 条边来连接网络中的 n 个顶点;3).选用的 n-1 条边不能产生回路。一、Kruskal算法简介基本思想:对一n个顶点的连通网络 N={V, E},其最小生成树是 T={V, TE};1.最小生成树T 中 V为网络N 中的全部顶点,TE 初始时为空;2.初始时,T中每个...原创 2018-07-23 22:14:57 · 714 阅读 · 0 评论 -
数据结构之并查集(C++)
一、并查集存储结构:数组. 原理:. 1.构建目标:利用数组的快速寻址的优势,将多个集合在数组上构建成无环非连通图,. 各个连通分量的结点间以保存上级结点索引进行关联,. 即树形结构,每个集合有且只有一个根结点;. 2.根结点查找:查找集合元素的根结点;. 3...原创 2018-07-23 17:50:49 · 423 阅读 · 0 评论 -
数据结构之二叉堆及堆排序(C++)
一、堆定义(Heap)n个元素的序列{k1,k2,...,kn},当且仅当任意ki 满足以下关系时,称之为堆(也是完全二叉树):1.当k[i] <= k[2i] && k[i] <= k[2i+1] 时,称为小顶堆,即每个结点的值都小于等于其左右孩子结点的值;2.当k[i] >= k[2i] && k[i] >= k[2i+1] ...原创 2018-07-23 17:31:22 · 758 阅读 · 0 评论 -
数据结构之图(邻接表实现)(C++)
一、图的邻接表实现1.实现了以顶点顺序表、边链表为存储结构的邻接表;2.实现了图的创建(有向/无向/图/网)、边的增删操作、深度优先递归/非递归遍历、广度优先遍历的算法;3.采用顶点对象列表、边(弧)对象列表的方式,对图的创建进行初始化;引用 "ObjArrayList.h"头文件,头文件可参看之前博文“数据结构之顺序列表(支持对象元素)”代码;4.深度优先遍历分别采用递归/非递归...原创 2018-07-17 15:53:00 · 24630 阅读 · 8 评论 -
数据结构之线索二叉树(C++)
注:代码中使用的"ObjArrayList.h"头文件参看之前博文:数据结构之顺序列表。//文件名:"ThBiTree.h"#pragma once#ifndef THBITREE_H_#define THBITREE_H_#include "ObjArrayList.h"/*. 线索二叉树 类模板定义.. 存储结构:线索链表. 在二叉链表基础上增加标识位,对结点空域(左右...原创 2018-06-02 14:21:36 · 583 阅读 · 0 评论 -
数据结构之二叉树(类模板实现)(C++)
注:代码中使用的“ObjArrayList.h”、"SqStack.h"、"CQueue.h" 头文件代码在上三篇博文中已给出,分别为数据结构之顺序列表、栈、队列。//文件名:"BiTree.h"#pragma once#ifndef BITREE_H_#define BITREE_H_#include <string>#include "ObjArrayList.h" //...原创 2018-05-28 23:10:18 · 3707 阅读 · 0 评论 -
数据结构之栈(顺序栈、链栈的类模板实现)(C++)
一、顺序栈类模板//文件名:"SqStack.h"#pragma once#ifndef SQSTACK_H_#define SQSTACK_H_/* 注: 1.实现类模板时,目前在VS中似乎只能将类定义与类实现放于同一个文件中,才能连接成功!! 2.模板的包含编译模式在 VS 中不能连接成功(#include "SqStack.cpp"); 3.模板的分离编译模式在 VS 中不...原创 2018-05-24 11:27:20 · 3353 阅读 · 0 评论 -
数据结构之二叉树应用(哈夫曼树及哈夫曼编码实现)(C++)
1.书上用的是静态链表实现,本文中的哈夫曼树用 排序链表 实现;2.实现了从 字符频率统计、构建权值集合、创建哈夫曼树、生成哈夫曼编码,最后对 给定字符串的编码、解码功能。//文件名:"HfmTree.h"#pragma once#include "SortedList.h" //"C1_Test.h" 排序列表#include <string>using namespace...原创 2018-06-04 22:16:45 · 9851 阅读 · 1 评论 -
数据结构之排序单链表(类模板实现)(C++)
1.实现了链表的顺序插入功能(可升序或降序),需实现元素结点的 int (* compare )(Elem *e1, Elem *e2); 比较接口;//文件名:"SortedList.h"#pragma once#ifndef SORTEDLIST#define SORTEDLIST#include <string>using namespace std;/*. 排...原创 2018-06-04 22:07:32 · 2046 阅读 · 0 评论 -
数据结构之顺序列表(支持堆对象元素)(C++)
一、顺序列表 类模板实现 1.以一维指针数组实现,存放对象元素; 2.实现了动态内存分配; (注:更改了 void ObjArrayList<ElemType>::_AllocSpace(int size, int type) 函数的内存分配实现 将 malloc 和 realloc 替换成了 new ...原创 2018-05-27 11:45:17 · 763 阅读 · 2 评论 -
数据结构之队列(循环队列、链队列的类模板实现)(C++)
一、循环队列类模板//文件名:"CQueue.h"#pragma once#ifndef CQUEUE_H_#define CQUEUE_H_/* 顺序队列之循环队列 类模板定义 CQueue (Cycle Queue) */template <typename ElemType>class CQueue{private: ElemType **base; /...原创 2018-05-25 11:21:14 · 2092 阅读 · 2 评论 -
数据结构之广义表(头尾链表表示法)(递归版)(C++)
//文件名:"GList.h"#pragma once#include <string>using namespace std;/* 广义表类 存储结构:1.头尾表示法;2.孩子兄弟表示法*//* 头尾表示法的链式存储结构 结构说明: 1.每个结点都看成是一个子表 2.以标志域区分结点类型:元素结点、表结点 3.表头指针指向表的第一个结点;表尾指...原创 2018-05-20 19:50:51 · 8246 阅读 · 0 评论 -
数据结构之图(邻接矩阵实现)(C++)
一、图的邻接矩阵实现1.实现了以顶点数组、邻接矩阵为存储结构的图;2.实现了图的创建(包含有向/无向图、有向/无向网)、顶点/边的增删操作、深度/广度优先遍历的算法;3.采用顶点对象列表、边(弧)对象列表的方式,对图的创建进行初始化;引用 "ObjArrayList.h"头文件,头文件可参看之前博文“数据结构之顺序列表(支持对象元素)”代码;4.采用将顶点数组空位的下标索引入...原创 2018-07-15 12:58:08 · 7962 阅读 · 1 评论