数据结构与算法
文章平均质量分 73
数据结构与算法
Julia_luofang
这个作者很懒,什么都没留下…
展开
-
队列操作实现
队列的定义:队列说白了,就是一种**“先进先出”**的储存结构,这跟我们日常生活中的排队现象相类似,如果忘记了,就想想你是怎么排队的,(但是前提是,你不插队)分类:链式队列 ----用链式存储实现静态队列 ----用顺序存储实现静态队列一般都用循环队列在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外,还需要有front(头指针)和rear(尾指针)...原创 2019-10-08 19:20:16 · 471 阅读 · 0 评论 -
栈的基本操作实现
栈—线性结构从数据结构上看,栈和队列也是线性表,其特别之处在于他们的基本操作是线性表操作的子集,即他们是操作受限的线性表栈:打个简单的比方:空栈就是一个空的水杯,如果你要往里面加水,只能从杯口加入(从栈顶加入),如果你要倒水也只能从杯口倒出(从栈顶删除),那么杯子的杯底就是栈的栈底对应的来看,栈的插入和删除操作只能在表尾进行。栈的特点:先进后出(想想水杯)栈又可以分为顺序栈和链栈顺序栈...原创 2019-10-07 22:10:22 · 944 阅读 · 0 评论 -
详细讲解最小生成树
要知道什么是最小生成树(最小代价生成树),就要知道生成树的概念。生成树:包含图中全部顶点,但只有足以构成一棵树的n-1条边。而最小生成树就是在生成树的条件中,再加上一个条件:使得权值之和最小。我们可以将其抽象化为这样一个例子:假设要在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。这时,自然会考虑这样一个问题:如何在最节省经费的前提下建立这个通信网络。那么,怎么构造最小生成...原创 2019-11-06 23:30:05 · 3726 阅读 · 0 评论 -
快速掌握图
图的定义图G是由两个集合V和E组成,记为G=(V,E)V(G)和E(G)表示图的顶点集和边集。其中E(G)可以为空, 表示这个图只有定点没有边图的分类有向图和无向图其中第一个图就是无向图:G1=({V1,V2,V3,V4,V5},{(v1,v2),(v1,v3),(v2,v5)(v3,v5),(V4,V5)})第二幅图就是有向图:G2=({V1,V2,V3,V4,V5},{<...原创 2019-11-01 19:52:18 · 500 阅读 · 0 评论 -
快速掌握哈弗曼树
哈弗曼树的基本定义哈弗曼树又称最优数,是一类带权路径长最短的树。看看里面涉及的概念:(1)路径:从树的一个节点到另一个节点之间的分支构成了这两个节点之间的路径(2)路径长度:路径上的分支数目(3)树的路径长度:从树根到每一个节点的路径长度之和(4)权:这个在数学上有相似的定义,可以相似的理解(5)节点的带权路径长度:树中所有带权路径长度之和(6)哈弗曼树:假设有n个叶子节点的二叉树...原创 2019-10-23 22:48:05 · 263 阅读 · 0 评论 -
顺序表的操作实验
顺序表的知识比较简单,所以这个就不多介绍顺序表的相关知识了。直接说实验题目吧:1、顺序表的实现:(1)用随机函数生成10个3位整数(100~999),把这些整数存于链表中;(2)输出表的内容;(3)读入一个整数,查看该整数是否在表中,若在,输出其位置(首位置为1);(4)读入一个整数,以及要插入的位置,把该整数插入到表中,输出表的内容(要求判断输入的位置是否合理);(5)读入一个整数...原创 2019-10-23 00:34:22 · 650 阅读 · 0 评论 -
树和二叉树
树——非线性的数据结构树的定义:树(Tree)是n(n>=0)个节点的有限集,其中空树:n=0;(1)有且仅有一个称之为根的节点(2)有若干个互不相交的子树,这些子树本身也是一棵树**通俗的定义:(1)树和结点和边组成(2)每个结点只有一个父结点,但是可以有多个子节点,但有一个结点例外,该结点没有父结点,此结点称为根结点个人觉得,树的定义其实很好理解,形象的比喻:我感觉树长得...原创 2019-10-16 14:25:59 · 422 阅读 · 0 评论 -
括号匹配检验问题
检验算法借助一个栈,每当读入一个左括号,则直接入栈,等待相匹配的同类右括号,每当读入一个右括号,若与当前栈顶的左括号类型相同,则二者匹配,将栈顶的左括号出栈,直到表达式扫描完毕在处理的过程中,还要考虑括号不匹配的情况。【算法步骤】1.初始化一个空栈S2.设置一标记性变量flag,用来标记匹配结果以控制循环及返回结果,1表示正确匹配,0表示错误匹配,flag初值为13.扫描表达式,依次读入...原创 2019-12-21 14:06:57 · 1329 阅读 · 0 评论 -
表达式求值问题
任何一个表达式都是操作数、运算符、界限符组成的,统称他们为单词。一般地,操作数既可以是常数,也可以是被说明为变量或常量的标识符,运算符可以被分为算数运算符、关系运算符和逻辑运算符三类,基本界限符有左右括号和表达式结束符等。为了叙述间的...原创 2019-12-21 13:44:05 · 835 阅读 · 1 评论 -
数据结构复习要点(课后选择题)
第1章 绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。数据对象:是性质相同的数据元素的集合,是数据的一个子集。数据结构:是...原创 2019-12-15 21:22:32 · 6027 阅读 · 1 评论 -
详细讲解快速排序
快速排序是由冒泡排序改进得来的。在冒泡排序的过程中,只对两个相邻的记录进行比较,因此每次交换的两个相邻记录只能消除一个逆序。如果能够通过两个(不相邻)的记录一次交换,消除多个逆序,则会大大加快排序的速度。快速排序方法中的一次交换可能消除多个逆序。具体过程如下:如何创建快速排序的递归树呢?以每次的key作为根节点,左边的key作为左子树,右边的作为右子树,一次递归创建int Partit...原创 2019-12-05 11:03:32 · 300 阅读 · 0 评论 -
详细讲解数据结构之——查找
查找的基本概念:(1)查找表:查找表是由同一类型的数据元素(或记录)构成的集合。(例如线性表,树表和散列表等等)(2)关键字:是数据元素(或记录)中某个数据项的值,用它可以标识一个数据元素(或记录)。若此关键字可以唯一标识一个记录,就称这个关键字为主关键字(对不同记录,其主关键字不同)。反之,称用以识别若干记录的关键字为次关键字。当数据元素只有一个数据项时,其关键字即为该数据元素的值。主关键字...原创 2019-11-21 21:32:11 · 793 阅读 · 0 评论 -
详细讲解希尔排序
其实也就是将每次寻找的跨度增大了。#include<iostream>using namespace std;void insertSort(int k[], int n){ int temp; int i; int j; int gap = n; do {...原创 2019-11-17 16:21:16 · 133 阅读 · 0 评论 -
详细讲解直接插入排序(简单插入排序)
直接插入排序基本思想:将一个记录插入到已经排好序的有序列表中,从而得到一个新的,记录数增加1的有序表。直接看看代码:#include<iostream>using namespace std;void insertSort(int k[], int n){ int temp; int i; int j; ...原创 2019-11-17 16:05:57 · 365 阅读 · 0 评论 -
详细讲解选择排序
选择排序算法的基本思想:选择排序算法就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最下的记录,并和第i(i>=1&&i<=n)个记录交换。直接看看代码:#include<iostream>using namespace std;void selectSort(int k[], int n){ int t...原创 2019-11-17 15:48:21 · 292 阅读 · 0 评论 -
详细讲解冒泡排序算法
冒泡排序的基本思想两两相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。先看看一般常见的冒泡排序代码:#include<iostream>using namespace std;void bubble(int k[],int n){ int temp; for (int i = 0; i < n - 1; i++)...原创 2019-11-17 15:33:54 · 419 阅读 · 0 评论 -
拓扑排序
我们可以很轻松判断一个图有没有环,是不是有向的,但是,如何让计算机知道我们的图是否有向或者有环?比如说,我们软件工程的教学进度。我们一般要学完高数和程序编程之后再学习数据结构和计算机组成原理,这就是活动和活动之间存在一些关系(优先关系)用节点表示活动,用弧表示活动间的优先关系的有向图称为AOV-网。在AOV-网中,不应该出现有向环,因为存在环意味着某项活动应以自己为先决条件。显然这是荒谬的...原创 2019-11-13 23:39:18 · 244 阅读 · 0 评论 -
详细讲解最短路径问题
下面主要介绍的是两种最常见的最短路径问题:求从某个源点到其余各个顶点的最短路径求每一对顶点之间的最短路径1.从某个源点到其余各个顶点的最短路径下面将讨论的是单源点的最短路径问题:给定带权有向图G和源点v0,求从v0到G中其余各顶点的最短路径。迪杰斯特拉算法:为了方便理解,我们用一个例子来进行讲解:注意,如果找到比之前更短的路径就替换掉之前假设的最短路径,如果路径长于之前加深的最短路径...原创 2019-11-13 23:11:29 · 2000 阅读 · 0 评论 -
详细讲解关键路径
1.AOE-网与AOV网相对的就是AOE-网。其中,边表示活动。AOE-网是一个带权的有向无环图,其顶点表示事件,弧表示活动,权表示持续的时间。通常,AOE-网可以估算工程完成的时间例如, 图6.28所示为一个有11项活动的AOE-网。其中有9个事件Vo,V1, …, V g , 每个事件表示在它之前的活动已经完成, 在它之后的活动可以开始。例如, v0v_0v0表示整个工程开始,v8v_8...原创 2019-12-29 20:44:42 · 534 阅读 · 0 评论 -
数据结构复习之简答题
(1)设待排序的关键字序列为{12,2,16,30,28,10,16*,20,6,18},试分别写出使用以下排序方法,每趟排序结束后关键字序列的状态。① 直接插入排序② 折半插入排序③ 希尔排序(增量选取5,3,1)④ 冒泡排序⑤ 快速排序⑥ 简单选择排序⑦ 堆排序⑧ 二路归并排序①直接插入排序② 折半插入排序折半插入排序在直接插入排序的基础上,在查询插入位置的时候采用的是折...原创 2019-12-29 21:58:35 · 19423 阅读 · 2 评论 -
数据结构知识点复习(五)
第七章 查找相关概念:(1)关键字:数据元素中某个数据项的值,可以标识一个数据元素(或记录)。如果可以唯一标识:主关键字。不唯一不标识,次关键字。(2)动态查找表和静态查找表:如果在查找的过程中有修改表的信息,那就是动态查找表,反之为静态查找表(3)**平均查找长度:**为确定关键字在查找表中的位置,需和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度。对于含有...原创 2019-12-26 16:09:49 · 1529 阅读 · 0 评论 -
数据结构知识点复习(四)
第6章 图在有向图中,顶点用尖括号,在无向图中,顶点用圆括号例如<x,y>和<y,x>是不相同的,但是(x,y)和(y,x)是相同的。在图中,一般用n来表示顶点的数目,用e来表示边的数目无向完全图和有向完全图:无向完全图:边的数目为n(n-1)/2有向完全图:边的数目为n(n-1)网:带权的图往往称为网入度和出度的概念是对于有向图而言的。在有向图中,所有顶点...原创 2019-12-24 20:35:23 · 1068 阅读 · 0 评论 -
数据结构知识点复习(三)
第5章 树和二叉树5.4二叉树的性质和存储结构5.4.1二叉树的性质有两种特殊形态的树:满二叉树和完全二叉树完全二叉树的特点:(1)叶子节点只能在层次最大的两层上出现(2)对任一节点,若其右分支下的子孙的最大层次为l,则其左分支的子孙最大层次必然是l或l+1以下的性质十分重要※5.4.2二叉树的存储结构1顺序存储#define Maxsize 100 //二叉树的最大...原创 2019-12-23 11:01:06 · 16049 阅读 · 2 评论 -
串的算法设计题
(1)写一个算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件(字符串中的合法字符为A-Z这26个字母和0-9这10个数字)。[题目分析] 由于字母共26个,加上数字符号10个共36个,所以设一长36的整型数组,前10个分量存放数字字符出现的次数,余下存放字母出现的次数。从字符串中读出数字字符时,字符的ASCII代码值减去数字字符 ‘0’的ASCII代码值,得出其数值(0…9),字母的...原创 2019-12-28 19:48:28 · 2865 阅读 · 0 评论 -
多种排序算法的实现
重点:插入排序、选择排序、冒泡排序、快速排序要求:被排序的对象由计算机随机生成,长度分别取20、100,500三种。算法中增加比较次数和移动次数的统计功能。对实验结果做比较分析。在这里插入代码片...原创 2019-12-22 18:06:00 · 416 阅读 · 0 评论 -
数据结构知识点复习(二)
第3章 栈和队列3.1.1 栈的定义及特点特点:先进后出3.1.2队列的定义及特点3.3.2顺序栈的表示和实现#define Maxsize 100typedef struct { SElemType *top; SElemType *base; int stackSize;}SqStack;1.初始化Status InitSatck(SqStack &s...原创 2019-12-22 17:52:10 · 535 阅读 · 0 评论 -
数据结构知识点复习(一)
第一章 绪论1.2基本概念和术语1.2.1数据、数据元素、数据项和数据对象数据:是客观事物的符号表示,是所有能够输入到计算机中并被计算机处理的符号的总称数据元素:又称元素、记录等。**是数据的基本单位。**数据元素常用来完整的描述一个对象,如学生记录。数据项:是数据元素的最小单位。例如学生基本信息中的姓名,学号等等。数据对象:是性质相同的数据元素的集合,是数据的一个子集1.2.2数据...原创 2019-12-22 10:38:29 · 968 阅读 · 0 评论 -
算法设计与分析常见习题及详解
无论在以后找工作还是面试中,都离不开算法设计与分析。本博文总结了相关算法设计的题目,旨在帮助加深对贪心算法、动态规划、回溯等算法的理解。原创 2021-01-16 20:35:16 · 8676 阅读 · 2 评论