-
【数据结构】-线性表的顺序表示和实现
所属栏目:[安全] 日期:2020-12-15 热度:143
线性表: 最常用且最简单的一种数据结构,是n个数据元素的优先序列。线性表是一个相当灵活的数据结构,它的长度可以根据需要增长或缩短,即对线性表的数据元素不仅可以访问,还以进行插入和删除等。 线性表的 顺序表示 :用一组地址连续的存储单元依次存储线[详细]
-
【数据结构】-线性表的链式存储结构
所属栏目:[安全] 日期:2020-12-15 热度:199
引言:由于线性表的顺序存储结构在插入和删除时需要大量移动数据元素,从而引入线性表的链式存储结构。 线性表的链式存储结构:用一组任意的存储单元(可以连续也可以不连续)存储线性表的数据元素。 为了表示数据元素ai和其直接后继ai+1之间的逻辑关系,对a[详细]
-
【数据结构】-栈和队列
所属栏目:[安全] 日期:2020-12-15 热度:198
一、栈的基本概念 栈(stack) :限定在表尾进行插入和删除操作的线性表。 栈顶(top) :允许进行插入和删除操作的一端,又称表尾。 栈底(bottom) :固定端,又称表头。 空栈 :不含元素的空表称为空栈。 插入元素的操作称为 入栈(压栈) 。 删除元素的[详细]
-
【数据结构】-串
所属栏目:[安全] 日期:2020-12-15 热度:95
一、串的基本概念 串(字符串) :是由零个或多个字符组成的有限序列,一般记为: s=‘a1a2…an’(n=0) s是串名,单引号括起来的是串的值,ai(1=i=n)可以是 字母、数字或其他字符 。 串中字符的数目n称为串的 长度 ; 长度为零的串称为 空串 ; 串中任意个连[详细]
-
【数据结构】-树和二叉树
所属栏目:[安全] 日期:2020-12-15 热度:64
一、树的定义和基本术语 树(Tree) 是n(n=0)个结点的有限集。在一棵非空的树中: 1)有且仅有一个特定的结点称为根(Root); 2)当n1时,其余结点可分为m个互不相交的有限集T1,T2,…Tm,其中每一个集合本身也是一棵树,并称为根的 子树(SubTree) 。[详细]
-
【数据结构】-树和森林
所属栏目:[安全] 日期:2020-12-15 热度:187
一、树的存储结构 1)双亲表示法 以一组地址连续的空间存储树的结点,同时在结点中附设一个指针域指示其双亲结点的位置。 这种存储结构利用每个孩子只有一个双亲的性质,求结点的双亲可以在常量时间内实现,但求结点的孩子时需要遍历整个结构。 2)孩子表示[详细]
-
【数据结构】-冒泡排序法Java实现
所属栏目:[安全] 日期:2020-12-15 热度:184
原理: 通过交换,一趟冒泡排序后,使关键字最大的记录放到最后一个记录的位置上。第二趟冒泡排序后,将第二大的关键字放到倒数第二个记录的位置上,依此类推。 时间复杂度: O(n^2) 稳定性: 稳定排序 public static void main (String[] args) { int [][详细]
-
【数据结构】-简单选择排序Java实现
所属栏目:[安全] 日期:2020-12-15 热度:85
基本思想: 每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小(大)的记录,并和第i个记录交换。 第一趟(i=1):从n个记录中选择最小(大)的记录,并和第1个记录交换; 第二趟(i=2):从n-1个记录中选择最小(大)的记录,并和第2个记录交换; 依次[详细]
-
【数据结构】-直接插入排序、希尔排序Java实现
所属栏目:[安全] 日期:2020-12-15 热度:78
直接插入排序: 将一个记录插入到已排好的有序序列中,从而得到新的、记录数加1的有序序列。 稳定性:稳定; 时间复杂度:O(n*n) 希尔排序: 先将整个待排记录分成若干子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行一次直[详细]
-
【数据结构】-快速排序Java实现
所属栏目:[安全] 日期:2020-12-15 热度:126
快速排序是对冒泡排序的一种改进。 基本思想: 通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后递归对这两部分记录进行排序,最终达到整个序列有序。 稳定性:不稳定; 时间复杂度:最好O(nlogn)–最坏O[详细]
-
【数据结构】-归并排序,基数排序
所属栏目:[安全] 日期:2020-12-15 热度:60
归并排序思想: 基数排序思想:[详细]
-
【数据结构】-常用排序算法对比
所属栏目:[安全] 日期:2020-12-15 热度:194
常用排序算法时间复杂度,空间复杂度,稳定性对比:[详细]
-
【数据结构】邻接表的3种常用表示方式——C++描述
所属栏目:[安全] 日期:2020-12-15 热度:200
指针表示法 struct ArcNode //定义边表结点 { int adjvex; //邻接点域 ArcNode* next;}; struct VertexNode //定义顶点表结点 { int vertex; ArcNode* firstedge;}; //头插法 void add( int from , int to){ s = new ArcNode; s-adjvex = to; s-next = adjl[详细]
-
【数据结构】——哈希表
所属栏目:[安全] 日期:2020-12-15 热度:156
数据结构之哈希表 目录 1、Hash表 2、堆排序 3、数据结构全书的交流 4、关于实践 小结 文彬他是一个很睿智的人,在对哲学、心理学和思维联想方面都是很强的一个人! 背景: 和文彬一同出来去洗手间的路上,又跳又蹦,交流了一下数据结构、从hash 、堆排序开[详细]
-
《我眼中的R语言》 ——(1) 【数据结构】
所属栏目:[安全] 日期:2020-12-15 热度:164
【前言】 最近有在学习R语言,感受到R语言在数据处理方面的强大,能够做到不需要自己编多少程序,借助其内部的一些函数和附加包就能够很好实现自己想要的功能。这样就能够真正做到把自己的想法快速实现。不过这样有一个不好的地方在于R语言中各种函数太多,[详细]
-
《数据结构》——排序
所属栏目:[安全] 日期:2020-12-15 热度:148
一、 概述 排序(Sorting)是数据处理中一种很重要的算法。一般情况下,排序操作在数据处理过程中要花费许多时间,为了提高计算机的运行效率,人们提出不断改进的排序算法,这些算法也从不同种角度展示了算法设计的某些重要原则。谈到了计算的效率,就得说说[详细]
-
【数据结构】——树及转换
所属栏目:[安全] 日期:2020-12-15 热度:87
是什么 树是n个结点的有限集合,树的定义是递归的,表明了树本身的固有特性,也就是一棵树由若干棵子树构成,而子树又由更小的子树构成...... 如: 每棵树有且仅有一个根结点,其它结点又是若干树,但都是根结点的子树。 需了解的概念 结点的度:一个结点的[详细]
-
【数据结构】静态查找之顺序查找
所属栏目:[安全] 日期:2020-12-15 热度:75
【思想】 从表的最后一个数据元素位置开始,从后往前依次将各个位置上的数据元素的键值与给定值比较。若某个位置上的数据元素的键值与给定值相等,则查找成功,并返回该位置作为结果;反之,若查找至第一个元素,所有数据元素的键值均与给定值不等,则查找不[详细]
-
【数据结构】静态查找之二分查找
所属栏目:[安全] 日期:2020-12-15 热度:156
【二分查找】 查找(Binary Search),也叫折半查找,是一种静态表查找方法。 【思想】 用给定值与处在表的中间位置的数据元素的键值进行比较,确定给定值的所在区间,然后逐步缩小查找区间。重复以上过程知道找到或确认找不到该数据元素为止。 【ASL】 ASL[详细]
-
【数据结构】静态查找之分块查找
所属栏目:[安全] 日期:2020-12-15 热度:166
【分块查找】 分块查找,也称索引顺序查找,是一种折半查找和顺序查找的改进方法。 【思想】 ① 把线性表分成若干块,每块包含若干个元素 ②块内无序,块间有序。 ③ 建立一个索引表,把每块中的最大关键字值和每块的第一个元素在表中的位置和最后一个元素在[详细]
-
【数据结构】链栈
所属栏目:[安全] 日期:2020-12-15 热度:127
Lstack.h #pragma once #include iostream #include stdlib . h using namespace std; #define Elemtype inttypedef struct Nstack{ Elemtype data ; Nstack * next;}Node; //节点 typedef struct{ Node * top; int size;}Lstack; //栈结构 void Init(Lstack[详细]
-
【数据结构】顺序栈
所属栏目:[安全] 日期:2020-12-15 热度:166
Stack.h #pragma once #includestdlib.h #includeiostream using namespace std ; #define SIZE 10 #define Elemtype int #define StackInit 10 typedef struct Sqstack{ Elemtype stack [SIZE]; int top;}Sqstack; void Init(Sqstack* s){ s-top = 0 ;} voi[详细]
-
【菜鸟福音】KMP算法简单理解(从严蔚敏老师的《数据结构》出发
所属栏目:[安全] 日期:2020-12-15 热度:106
导言:本文有以下特点: (1)主要讨论的是严蔚敏老师的《数据结构》中第四章所提到的KMP算法,即带NEXT[]辅助数组的KMP算法; (2)主要针对初学者,对算法不熟悉的同学,主要目的是希望通过本文能让初学者快速理解KMP算法的NEXT的计算规则。 最近复习到KMP[详细]
-
【数据结构】用栈实现迷宫
所属栏目:[安全] 日期:2020-12-15 热度:70
#include iostreamusing namespace std;#define N 10#include stackstruct pos{ int _row;// 行 int _col;// 列};bool cheakstep(pos a){ if(a._col -1||a._col N-1|| a._row -1||a._row N-1) { return true ; } return false ;}bool IsPath(int arr[][N],po[详细]
-
【数据结构】检查元素出栈的合法性
所属栏目:[安全] 日期:2020-12-15 热度:143
这个问题是什么意思呢? 其实很简单,题目的意思就是想检查一个一个序列是否为另一个序列的合法出栈序列? 若1 2 3 4 5为入栈序列,则该序列的合法出栈序列为:5 4 3 2 1 4 3 2 1 5 3 2 1 4 5 等。。。。 现在要写一个程序判断该出栈序列是否正确,我们的思[详细]