![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 51
哎呀呀呦
这个作者很懒,什么都没留下…
展开
-
c语言实现静态顺序表
头文件如下:#ifndef _S_L#define _S_L#include #include #include #pragma warning(disable:4996)#define MAX_SIZE 10typedef int DataType;typedef struct SeqList{ DataType array[MAX_SIZE];//存储数据的数原创 2016-12-09 09:59:41 · 233 阅读 · 0 评论 -
冒泡排序
冒泡排序算法的运作如下: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 void BubbleSort(int* arr, int size){原创 2017-08-23 12:15:43 · 235 阅读 · 0 评论 -
选择排序
1.选择排序,每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。oid SelectSort(int* arr, int size){ int i, j, min, tmp; for (i = 0; i < size - 1; i++) { min = i; //查找最小值原创 2017-08-22 15:48:19 · 301 阅读 · 0 评论 -
插入排序
1.直接插入排序#include <stdio.h>void InertSort(int* arr, int size){ int pos = 0; for (int i = 1; i < size; i++) { int tmp = arr[i]; pos = i-1; while (pos >= 0 && arr[pos原创 2017-08-18 21:56:07 · 219 阅读 · 0 评论 -
bitmap(位图)
1.什么是位图?来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。比如: 申请一个int型的空间,则有4Byte,32bit。输入1,2 , 3 ,4 0000 0000 0000 0000 0000 0000 0000 0000 输入1 0000原创 2017-04-23 11:46:17 · 787 阅读 · 0 评论 -
堆的应用
此文章用到了之前堆的建立的代码,下面是链接 堆的建立1.优先级队列优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。#pragma once#include <cassert>#include <iostream>#include <cstdlib>#include "Heap.h"using namespace std;template <class原创 2017-03-25 11:22:58 · 317 阅读 · 0 评论 -
huffman树及其应用
1.huffman树基本概念Huffman树,又称为最优二叉树,是加权路径长度最短的二叉树。路径:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。如下图,(b)图中红色线标出的是树的一条路径路径长度:通路中分支的数目称为路径长度。如下图,(b)中红线标注的路径的路径长度为2。权值:在数学领域,权值指加权平均数中的每个数的频数,也称为权数或权重。 计算机领域中(数据结构)原创 2017-04-10 11:43:47 · 983 阅读 · 0 评论 -
c++实现堆
堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是 最大堆:每个父节点的都大于孩子节点。 最小堆:每个父节点的都小于孩子节点。 比如有一个数组 那么我们就相当于创建了一颗完全二叉树 如果要建最大堆,则如下图所示 如果要建最小堆,则如下图所示 代码实现:#pragma once#include <vector>#include <iostream>原创 2017-03-23 19:10:11 · 539 阅读 · 0 评论 -
线索化二叉树
二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。 为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息.二叉树的结构enum PointerTag{ THREAD, //线索化指针的标记原创 2017-03-23 09:18:58 · 224 阅读 · 0 评论 -
AVL树
1.AVL树的概念AVL树 AVL树又称为高度平衡的二叉搜索树,是1962年有俄罗斯的数学家G.M.Adel’son-Vel’skii和E.M.Landis提出来的。它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度AVL树的性质 1.左子树和右子树的高度之差的绝对值不超过1 2.中的每个左子树和右子树都是AVL树 3.每个节点都有一个平衡因子(balance fact原创 2017-04-06 13:31:06 · 218 阅读 · 0 评论 -
二叉树的非递归遍历
void PrevOrder_NonR()//非递归前序遍历 { if (_root == NULL) return; stack<Node*> s; Node* cur = _root; while ((cur != NULL) || (!s.empty())) {原创 2017-03-21 19:52:56 · 388 阅读 · 0 评论 -
二叉树的简单实现
二叉树的简单实现(1)#include <iostream>#include <queue>#include <cstdlib>using namespace std;template<class T>struct BinaryTreeNode{ BinaryTreeNode<T>* _left; BinaryTreeNode<T>* _right; T _date原创 2017-03-20 12:04:16 · 258 阅读 · 0 评论 -
快速排序
1.基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2.单趟排序分析我这里用的是左右指针的方法,下面具体的步骤以及代码的实现 代码实现:int PortSort(int* arr, int begin, int end)//左右指针法{原创 2017-08-23 16:22:06 · 230 阅读 · 0 评论