
数据结构
文章平均质量分 61
Gpwner
这个作者很懒,什么都没留下…
展开
-
数据结构----完全二叉树和满二叉树以及前序、中序、后序遍历
一) 满二叉树和完全二叉树 1.满二叉树定义:又叫Full Binary Tree. 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点(最后一层上的无子结点的结点为叶子结点)。也可以这样理解,除叶子结点外的所有结点均有两个子结点。节点数达到最大值。所有叶子结点必须在同一层上。 如图: 2.完全二叉树定义:完全二叉树(Complete Binary Tree) 若设二叉树的深度为h,原创 2016-05-25 20:50:35 · 9312 阅读 · 0 评论 -
数据结构(C++)<图的深度遍历和广度遍历>
1.图的遍历与树的遍历类似,对图的结构也可以进行遍历。图的遍历是指给定一个图G和其中任意一个顶点v0,,从v0出发,沿着图中各个边访问所有顶点,且每个顶点只访问一次。 需要借助一个数组visit[]记录顶点是否访问过。在开始遍历之前初始化数组中的每一个元素为FALSE,在遍历过程中一旦顶点i被访问就立即将visited[i]设置为TRUE。这样无论走到哪一个顶点,只要检查其对应的visited标志原创 2017-02-19 20:01:56 · 3255 阅读 · 0 评论 -
数据结构(C++)<图的邻接表表示>
1.邻接表图的邻接表存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。表结点(Nodetable)存放的是邻接顶点在数组中的索引。对于无向图来说,使用邻接表进行存储也会出现数据冗余,表头结点A所指链表中存在一个指向C的表结点的同时,表头结点C所指链表也会存在一个指向A的表结点。 邻接原创 2017-02-19 19:06:54 · 3482 阅读 · 0 评论 -
数据结构(C++)最小优先权队列实现<模板类>
1.优先级队列: 每一次都能取出队列中的具有最高优先权的元素,这种队列就是优先级队列。 2.代码实现 模板类PQueue:#ifndef PQUEUE_H#define PQUEUE_H#include<assert.h>#include<iostream>#include<stdlib.h>using namespace std;const int DefaultSize原创 2017-02-10 11:04:21 · 756 阅读 · 0 评论 -
数据结构(C++)<图的邻接矩阵存储>
1.图的概念图是有顶点集合以及顶点的关系集合组成的一种数据结构。 a)完全图:由n个顶点组成的无向图,若有n*(n-1)/2条边,则称为无向图完全图。 在由n个顶点组成的有向图中,若有n*(n-1)条边,则称之为有向完全图。 b)权:在某些图中,边具有与之相关的数值,称为权重。权重可以表示从一个顶点到另一个顶点的距离、花费的代价等等。这种带权图也叫作网络。 c)度:与顶点v关联的边数称为度。原创 2017-02-18 23:07:55 · 1792 阅读 · 0 评论 -
数据结构(C++)<AVL树>
1.AVL树的概念AVL树又称高度平衡的二叉搜索树。 一棵AVL树或者是空树,或者是就要有一下性质的二叉搜索树:它的左子树和右子树都是AVL 树,且左子树和右子树的高度之差绝对值不超过1。如果一个结点的左子树和右子树的高度之差的绝对值超过1,则这棵树不是AVL树。2.平衡旋转如果一棵树原本是平衡的二叉搜索树,新插入一个新节点之后,造成了不平衡。此时必须调整树的结构使之平衡化。平衡化旋转分为单旋转(原创 2017-02-17 22:49:50 · 526 阅读 · 0 评论 -
二叉树的遍历<递归算法实现>、<非递归算法实现>
二叉树的遍历主要有三种:前序遍历、中序遍历、后序遍历 下面以遍历下颗树为例: 前序遍历:-+a*b-cd/ef 中序遍历:a+b*c-d-e/f 后序遍历:abcd-*+ef/- 递归实现public: //前序遍历 void preOrder(void(*visit)(BinTreeNode<T> *p)) { //递归算法 p原创 2017-02-09 21:26:43 · 680 阅读 · 0 评论 -
数据结构(C++) 二叉树模板类<链表存储表示>
1.二叉树 递归定义:一颗二叉树是结点的有限的集合,该集合或者为空或者是由一个根节点加上两颗分别称为左子树和右子树、互不相交的二叉树的组合。 二叉树的左右子树都还是二叉树,到达空子树的时候递归定义结束。许多基于二叉树的算法都利用了这个递归特性。 二叉树的特点是每个节点最多有两个子女,分别称为左右子女。在二叉树中不存在度数大于2的节点,并且二叉树的子树有左右之分,其子树的次序不能颠倒。原创 2017-02-09 17:22:31 · 3183 阅读 · 0 评论 -
数据结构(c++)<二叉搜索树>
1.概念二叉搜索树或者是一棵空树或者是一棵具有以下性质的树: a).每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。 b).左子树(如果存在)上所有的节点的关键码都小于根节点的关键码。 c).右子树(如果存在)上所有节点的关键码都大于根节点的关键码。 d).左子树和右子树都是一棵二叉搜索树 以下是二叉搜索树的例子: 从这些树中可以看出,任意节点的关键码都大于原创 2017-02-13 13:10:47 · 588 阅读 · 0 评论 -
数据结构(C++)----单链表模板类
所有的文件都在List.h文件下#ifndef LIST_H#define LIST_H#include<iostream>#include<stdlib.h>using namespace std;template<class Type>class List;template<class Type>class ListNode{public: friend class Lis原创 2016-11-27 21:38:02 · 1023 阅读 · 0 评论 -
数据结构(c++)栈的模板类(使用链表实现)
List Node.h#ifndef LISTNODE_H#define LISTNODE_H#include<iostream>/*Create by 软件工程 gpwner 2016年11月28日17:37:23*/using namespace std;template<class Type>class ListNode{public: //链表结点构造函数原创 2016-11-29 10:04:58 · 1474 阅读 · 1 评论 -
数据结构(c++)最小堆模板类
1.数据结合如果有序,将为各种操作带来便利.从外表来看,优先级队列很像队列和栈,但是要构造高效率的优先级队列,需要比队列和栈考虑更多的因素。在优先级队列的各种实现中,堆是一最高效的一种数据结构。 最小堆:任意一节点的关键码都均 小于或者等于它的左右子女的关键码,位于堆顶(即完全二叉树的根节点的位置)的节点的关键码是整个集合中最小的,所以称为最小堆。最大堆与之相反。2.将一个堆调整为最小堆原创 2017-02-12 16:11:01 · 2789 阅读 · 0 评论