数据结构学习笔记
沫沫就沫沫好了
这个作者很懒,什么都没留下…
展开
-
数据结构学习笔记(三) 树形结构之遍历对称序线索二叉树
以下是前序、对称序以及后序遍历对称序线索二叉树的算法。 用于遍历的二叉树如下图: 一、前序遍历对称序线索二叉树。#include#define MaxSize 10using namespace std;//变量定义与声明typedef char datatype;typedef struct node{ datatype data; struct n原创 2018-01-23 14:09:09 · 769 阅读 · 0 评论 -
数据结构学习笔记(三) 树形结构之对称序线索二叉树的插入
以下是对称序线索二叉树的插入代码,用于插入的二叉树如下图所示: (其中X、Y结点用于插入,插入位置如图) #include<iostream>#define MaxSize 13using namespace std;//变量定义与声明typedef char datatype;typedef struct node{ datatype data; struct nod原创 2018-01-28 19:12:40 · 781 阅读 · 0 评论 -
数据结构学习笔记(三) 树形结构之堆删除及堆排序
堆删除也即从堆(最小堆/最大堆)顶部删除(取出)元素,因每次删除(取出)的元素都为当前堆的最大/最小值,故可以利用堆的性质以及堆删除的算法,以达到堆排序的目的。 堆排序的时间复杂度为O(nlogn)。#include<iostream>using namespace std;//类型定义与变量说明const int DefaultSize=100;typedef int datatype;原创 2018-01-28 19:26:35 · 385 阅读 · 0 评论 -
数据结构学习笔记(三) 树形结构之筛选法建立最小堆
以下是使用筛选法建立最小堆的代码,用于建堆的数据为{35,26,48,10,59,64,17,23,45,31}。 筛选法也即,从堆的最右下一个分支节点起,自下而上遍历每一个分支节点,使得以该分支节点为根的子树成为最小堆。//筛选法+建立最小堆#includeusing namespace std;//类型定义与变量说明const int DefaultSize=100;type原创 2018-01-28 19:16:18 · 10585 阅读 · 0 评论 -
数据结构学习笔记(三) 树形结构之利用堆构造哈夫曼树
以下是利用堆构造huffman树的示例,最终构造结果如下图所示: #include<iostream>using namespace std;//抽象数据类型const int m=12; //外部结点的数目typedef char datatype;typedef struct node1{ float key;//权值 datatype data; stru原创 2018-01-28 19:35:26 · 1351 阅读 · 0 评论 -
数据结构学习笔记(四) 图之邻接表实现深度优先遍历
一下是使用邻接表存储表示,实现图的深度优先遍历的示例。 用于遍历的有向图如下: #include<iostream>#define MaxVertexNum 6using namespace std;//抽象数据类型typedef char vertextype;//边结点类型typedef struct edge{ int mark; int no; st原创 2018-01-30 11:36:54 · 3660 阅读 · 0 评论 -
数据结构学习笔记(四) 图之邻接矩阵实现深度优先遍历
以下是用邻接矩阵存储表示,实现图的深度优先遍历的示例。 用于遍历的有向图如下: //递归实现#include<iostream>#define MaxVertexNum 6using namespace std;//抽象数据类型typedef char vertextype;//顶点类型typedef int edgetype;//边的权值typedef struct{原创 2018-01-30 11:40:09 · 2160 阅读 · 1 评论 -
数据结构学习笔记(四) 图之邻接表实现广度优先遍历
以下是用邻接表存储表示,实现图的广度优先遍历的示例。 用于遍历的无向图如下: //v0-v7依次为a-h#include<iostream>#define MaxVertexNum 6#define MaxSize 7using namespace std;//抽象数据类型typedef char vertextype;typedef int datatype;//队列typed原创 2018-01-30 11:44:28 · 4557 阅读 · 0 评论 -
数据结构学习笔记(四) 图之邻接矩阵实现广度优先遍历
以下是用邻接矩阵存储表示,实现图的广度优先遍历的实例。 用于遍历的无向图如下: //v0-v7依次为字符0-7#include<iostream>#define MaxVertexNum 8#define MaxSize 7using namespace std;//抽象数据类型typedef char vertextype;//顶点类型typedef int edgetype;/原创 2018-01-30 12:31:12 · 1271 阅读 · 0 评论 -
数据结构学习笔记(四) 图之最小生成树prim算法邻接矩阵实现
以下是使用邻接矩阵存储表示的,最小生成树prim算法应用的实例。 用于演示的图如下: #include<iostream>#define MaxVertexNum 6#define MAXNUM 65535using namespace std;//抽象数据类型typedef char vertextype;//顶点类型typedef int edgetype;//边的权值type原创 2018-01-30 12:36:55 · 1161 阅读 · 0 评论 -
数据结构学习笔记(四) 图之邻接表实现最小生成树prim算法
以下是使用邻接表存储表示的,最小生成树prim算法的应用实例。 用于演示的图如下: #include<iostream>#define MaxVertexNum 6#define MAXNUM 65535using namespace std;//抽象数据类型typedef char vertextype;//顶点类型//边结点类型typedef struct edge{原创 2018-01-30 12:38:48 · 3637 阅读 · 2 评论 -
数据结构学习笔记(三) 树形结构之前、中、后序遍历(非递归)
以下是以非递归方法遍历二叉树的代码实现,包括前序遍历、中序遍历以及后序遍历。 遍历所用的二叉树图示如下: 一、前序遍历。#includeusing namespace std;//抽象数据类型——变量定义和变量说明const int MaxSize=10;typedef char datatype;typedef struct node{ datatype d原创 2018-01-22 17:41:21 · 434 阅读 · 0 评论 -
数据结构学习笔记(三) 树形结构之对称序线索化二叉树
以下是对称序线索化二叉树的算法代码实现,被线索化的二叉树如下: #include<iostream>#define MaxSize 10using namespace std;//变量定义与声明typedef char datatype;typedef struct node{ datatype data; struct node *lchild,*rchild;原创 2018-01-23 14:02:31 · 599 阅读 · 0 评论 -
数据结构学习笔记(三) 树形结构之二叉树的前、中、后序遍历递归方法
以下是二叉树的三种递归遍历方法,包括前序、中序以及后序递归。 递归所用到的图示如下: #include<iostream>using namespace std;//抽象数据类型——变量定义和变量说明const int MaxSize=10;typedef char datatype;typedef struct node{ datatype data; struct原创 2018-01-23 13:59:25 · 361 阅读 · 0 评论 -
数据结构学习笔记(一) 顺序表
一、向量。#include<iostream>using namespace std;//抽象数据类型#define MaxSize 100typedef int datatype;typedef struct{ datatype V[MaxSize]; int n;}SeqList;//向量插入void Insert(SeqList &L,int i,datatyp原创 2017-10-25 23:05:08 · 305 阅读 · 0 评论 -
数据结构学习笔记(二) 链表之单链表的基本操作
以下是一些单链表的基本操作方法,包括单链表的创建、增加或删除元素,查找某一个元素以及反转单链表。#include<iostream>using namespace std;//抽象数据类型typedef int datatype;typedef struct node{ datatype data; struct node *next;}ListNode,*LinkLis原创 2017-10-26 06:52:21 · 356 阅读 · 0 评论 -
数据结构学习笔记(二) 链表之带表头结点的单链表及其基本操作
以下是带表头节点的单链表的一些基本操作,包括带表头节点的单链表的创建、查找、插入、删除、反转以及打印。#include<iostream>using namespace std;//抽象数据类型typedef int datatype;typedef struct node{ datatype data; struct node *next;}ListNode;//单链表原创 2018-01-22 15:33:52 · 3843 阅读 · 0 评论 -
数据结构学习笔记(二) 链表之链栈基本操作
以下是链栈的一些基本操作,包括链栈的推入、弹出、读栈顶元素以及打印。#include<iostream>using namespace std;//抽象数据类型typedef int datatype;typedef struct node{ datatype data; struct node *next;}StackNode,*LinkStack;//链栈的推入vo原创 2018-01-22 15:36:39 · 321 阅读 · 0 评论 -
数据结构学习笔记(二) 链表之带表尾指针的单循环链表
以下是带表尾指针的单循环链表的基本操作,包括链表的创建、形成循环链表以及打印。#include<iostream>using namespace std;//抽象数据类型typedef int datatype;typedef struct node{ datatype data; struct node *next;}ListNode,*LinkList;//带表头结点原创 2018-01-22 15:42:52 · 4222 阅读 · 0 评论 -
数据结构学习笔记(二) 链表之链队列基本操作
以下是链队列的一些基本操作,包括链队列的入队、出队、读队头元素以及打印。#include<iostream>using namespace std;//抽象数据类型typedef int datatype;typedef struct node{ datatype data; struct node *next;}QueueNode;typedef struct{原创 2018-01-22 15:44:43 · 252 阅读 · 0 评论 -
数据结构学习笔记(二) 链表之带表头结点的单循环链表基本操作
以下是带表头节点的单循环链表的基本操作,包括链表的创建、形成循环链表以及打印。#includeiostream>using namespace std;//抽象数据类型typedef int datatype;typedef struct node{ datatype data; struct node *next;}ListNode,*LinkList;//带原创 2018-01-22 15:48:51 · 440 阅读 · 0 评论 -
数据结构学习笔记(二) 链表之带表头结点的双循环链表基本操作
以下是带表头节点的双循环链表的基本操作,包括链表的创建、前插、删除、打印以及逆向打印。#include<iostream>using namespace std;//抽象数据类型typedef int datatype;typedef struct node{ datatype data; struct node *next,*prior;}DLnode;//双循环链表的原创 2018-01-22 15:52:21 · 384 阅读 · 0 评论 -
数据结构学习笔记(二) 链表之用循环链表解决约瑟夫问题
约瑟夫问题是个有名的问题:n个人围成一圈,从第一个开始报数,第m个将被杀掉,最后剩下一个,其余人都将被杀掉。例如n=6,m=5,被杀掉的顺序是:5,4,6,2,3,1。我们知道第一个人(编号一定是(m-1)) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m mod n的人开始)。通过循环结构进行报数,建立用于遍历的结点p,以及p的前驱结点prior,数到出列的人就把该结点从循环链表原创 2018-01-22 15:58:13 · 360 阅读 · 0 评论 -
数据结构学习笔记(三) 树形结构之一般二叉树的顺序存储_二叉链表表示法_转换
以下是一般二叉树的顺序存储表示法到二叉链表表示法的转换,最后用前序遍历的方式输出的代码。//一般二叉树的顺序存储表示法到二叉链表表示法的转换#include<iostream>using namespace std;//抽象数据类型——变量定义和变量说明const char MaxSize=10;typedef int datatype;typedef struct node{原创 2018-01-22 16:43:18 · 2434 阅读 · 1 评论 -
数据机构学习笔记(四) 图之单源最短路径Dijkstra算法
以下是用于实现Dijkstra算法的图: 代码实现如下:#include<iostream>#define MaxVertexNum 6#define MAXNUM 65535using namespace std;//抽象数据类型typedef string vertextype;//顶点类型typedef float edgetype;//边的权值typedef stru原创 2018-01-30 12:44:20 · 296 阅读 · 0 评论