考研复习数据结构
略
pudding_art
这个作者很懒,什么都没留下…
展开
-
数据结构(七)排序
排序的基本概念插入排序交换排序选择排序二路归并排序基数排序外部排序各种排序算法的比较排序算法的各种应用原创 2020-10-25 15:07:24 · 399 阅读 · 0 评论 -
数据结构(六)查找
查找的基本概念顺序查找法分块查找法折半查找法B树及其基本操作、B+树的基本概念散列表字符串的模式匹配查找算法的分析及应用原创 2020-10-25 08:53:47 · 1703 阅读 · 0 评论 -
数据结构(六)——查找和排序练习题
写出折半查找的递归算法,初始调用时,low为1,high为ST.length线性表中各结点的检索概率不等,则可用如下策略提高顺序检索的效率:若找到指定的结点,将该结点和其前驱结点(若存在)交换,使得经常被检索的结点尽量位于表的前端,试设计在顺序结构和链式结构的线性表上实现上述策略的顺序检索算法数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数字编写双向冒泡排序算法,在正反两个方向交替进行扫描,即第一趟把关键字最大的元素放在最后面,第二趟把关键字最小的元素放在序列的最前面,如此反复进行。已.原创 2020-10-24 11:07:18 · 1350 阅读 · 0 评论 -
数据结构(五)——图的基本概念和操作练习题
写出从图的邻接表转换成邻接矩阵表示的算法判断一个无向图G是否是一棵树,若是一棵树,则算法返回true,否则返回false写出图的深度优先搜索DFS算法的非递归算法(图采用邻接表的形式)分别采用基于深度优先遍历和广度优先遍历的算法判别以邻接表方式存储的有向图中是否存在由顶点vi到顶点vj的路经(i!=j)。注意,算法中涉及到图的基本操作必须在此存储结构上实现。假设图用邻接表表示,设计一个算法,输出从顶点vi到顶点vj的所有简单路径利用DFS实现有向无环图.原创 2020-10-24 10:42:45 · 461 阅读 · 0 评论 -
数据结构(四)——树和二叉树练习题
已知一棵二叉树按照顺序存储结构进行存储,设计一个算法,求编号分别为i和j的两个结点的最近公共祖先结点。原创 2020-10-22 11:13:01 · 2665 阅读 · 0 评论 -
一天十道算法题(day3)
第一题给你一个长度为50的数字串,问你有多少个子序列构成的数字可以被3整除答案对1e9+7取模。【注意:子序列和子串的区别】public class Main {//主类 public static void main(String args[])throws Exception{ int [] arr = {1,3,2}; System.out.pr...原创 2020-04-11 00:48:36 · 467 阅读 · 0 评论 -
一天十道算法题(day2)
1.动态规划的优化以day1的机器人和编辑距离为例一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对...原创 2020-04-14 20:00:16 · 237 阅读 · 0 评论 -
数据结构(三)树与二叉树基本概念
树的基本概念二叉树树、森林树与二叉树的应用原创 2020-10-10 23:24:04 · 2225 阅读 · 0 评论 -
数据结构(二)栈和队列练习题
队列栈和队列的应用原创 2020-09-24 22:00:25 · 1580 阅读 · 0 评论 -
数据结构(二)栈和队列
一、栈栈的定义中栈首先是线性表,然后只有一端(栈顶)可以进行操作,另一端固定(栈底)。对栈的基本操作InitStack(&S);//初始化栈StackEmpty(S);//判断栈是否为空Push(&S,x);//将元素压入堆栈(前提栈未满)Pop(&S,x);//将元素从栈顶弹出(前提栈非空)GetTop(S,&x);//返回当前栈顶元素ClearStack(&S);//清空当前栈bool InitStack(SqStack &s){原创 2020-09-17 11:32:07 · 271 阅读 · 0 评论 -
数据结构(一)线性表练习题2
线性表的链式表示静态链表需要分配较大的连续空间,插入和删除不需要移动元素某线性表中最常见的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D)存储方式最节省时间。A 单链表 B 仅有头指针的单循环链表 C 双链表 D 仅有尾指针的单循环链表注意涉及到删除节点需要知道当前节点的前驱节点,一般是否使用双链表看是否有删除操作,是否是循环看对头尾节点的操作带头结点的双循环链表L为空的条件是(D)这里容易误选BA L->prior == L && L->n原创 2020-09-16 12:18:41 · 2152 阅读 · 0 评论 -
数据结构(一)线性表练习题1
习题按类和方法区别原创 2020-09-14 18:57:32 · 335 阅读 · 0 评论 -
数据结构复习(一)线性表概念和基本操作
线性表的基本概念线性表的定义与基本操作相同有限数据元素构成的有限序列,线性表是一种逻辑结构,顺序表(数组)和链表是存储结构//静态数组# define MaxSize 50struct SqList{ ElemType data[MaxSize]; int length;};//动态数组# define InitSize 50struct SeqList{ ElemType* data; int length,Maxsize; //因为这里是动态创建的,只知道初原创 2020-09-13 22:22:43 · 135 阅读 · 0 评论 -
编程练习(二)成绩排序
题目描述查找和排序题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。示例:jack 70peter 96Tom 70smith 67从高到低 成绩peter 96jack 70Tom 70smith 67从低到高smith ...原创 2020-02-27 22:02:48 · 697 阅读 · 0 评论 -
编程练习(一)进制转换
十进制和二进制二十进制转换过程中经常用到的,最好记住0——(0)₂1——(1)₂2——(10)₂3——(11)₂4——(100)₂5——(101)₂6——(110)₂7——(111)₂8——(1000)₂9——(1001)₂十进制转二进制遵循原则“错两位加,末位添0⃣️,➕下一位”示例:43046721先从最高位开始,4 转化为 (100)₂,然后开始粗体字的步骤。...原创 2020-02-27 20:13:21 · 985 阅读 · 0 评论 -
数据结构(五)图的基本概念和操作
图的基本概念tips:应掌握图的基本概念及基本性质(度、路径长度、回路、路径等)、图的存储结构(邻接矩阵、邻接表、邻接多重表和十字链表)及其特性、存储结构之间的转化、基于存储结构上的遍历操作和各种应用(拓扑排序、最小生成树、最短路径和关键路径)等图的定义图G由顶点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中定点之间的关系(边)集合。若V=...原创 2020-02-24 20:25:03 · 331 阅读 · 0 评论 -
排序算法(三)选择排序
选择排序基本思想每一趟在后面n-i+1个待排序的元素中找到最小的然后放置在第i个位置,就是位置0-length-1下标相当于是已经知道顺序的了,然后在序列里找每组序列的最小元素放在这个已知位置就可以了。简单选择排序基本思想每一趟排序记录当前元素的最终位置,设置一个变量,每当要交换的时候,随时更改变量的值#include <iostream>using namespace ...原创 2020-02-23 15:26:48 · 278 阅读 · 0 评论 -
排序算法(二)交换排序
交换排序概念根据序列中两个元素的关键字的大小比较结果交换两个元素在序列中的位置1、冒泡排序基本思想从前往后或者从后往前两两比较相邻元素的值,如果为逆序(与事先规定顺序:递增/递减相反),交换两个数的位置,从第一对到最后一对均完成交换,称为一次冒泡,它会将整个序列里最小的或者最大的元素换到第一个或者最后一个位置,一般结果将最小的元素交换到待排序序列的第一个位置(关键字最小的元素如气泡般向上...原创 2020-02-22 21:03:20 · 476 阅读 · 0 评论 -
排序算法(一)插入排序
插入排序概念:在已经排好序的序列中插入一个数值使其成为新的有序序列(教材定义:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成)⚠️教材的定义体现了在原序列上进行的一种排序;⚠️按照顺序表的方式存储的话,插入排序实际上就采用就地排序【空间复杂度O(1)】;⚠️每次都要从在已排好的子序列中找到的位置开始整体将数组元素向后移动。1、直接插入排序...原创 2020-02-22 18:15:35 · 224 阅读 · 0 评论 -
中序和先序、中序和后序
中序和后序Lnode CreateBTree(char inOd[], char postOd[], int n){ if (n == 0) return nullptr; Lnode btRoot = new Node; btRoot->data = postOd[n-1]; //后序序列最后一个元素一定是根节点 char lIn...原创 2020-02-20 16:28:10 · 783 阅读 · 0 评论 -
先序创建二叉树
先序序列创建二叉树#include<iostream>using namespace std;typedef struct Node{ char data; struct Node *lchild,*rchild;}Node,*Lnode;typedef struct LinkNode{ Node data; struct LinkNode ...原创 2020-02-20 09:58:24 · 369 阅读 · 0 评论 -
二叉树的建立(一)
交互式问答建立二叉树#include<iostream>using namespace std;typedef struct Node{ char data; struct Node *lchild,*rchild;}Node,*Lnode;typedef struct LinkNode{ Node data; struct LinkNode...原创 2020-02-20 09:11:35 · 248 阅读 · 0 评论 -
数据结构(一)算法的正确性证明
算法的正确性证明直接证明法反证法要证明定理是正确的,首先假设定理是错误的,然后使用正确的命题和推理规则进行推理,出现:1.与已知条件矛盾2.与公理矛盾3.与正确命题矛盾4.自相矛盾则得到结果(按照从浅显的正确性到稍微加深的部分进行)例:证明:没有最大的整数思路:假设有最大的整数设为P,令N=p+1则存在比P大的整数(考虑可以在整数上进行的运算)数学归纳法强归纳法:保证归纳...原创 2019-08-27 20:14:11 · 3264 阅读 · 0 评论 -
数据结构(一)算法
算法算法的特性确定性有限性(不仅要求步骤有限,而且要求步骤尽量少)输入输出可行性算法的描述(ADL)1.算法 <算法名> (变量i1,变量i2,…,变量in.变量j1,…)//算法开头写法,变量i表示输入变量数目>=0,变量j表示输出变量数目>=1;算法名由数字和字母组成且第一个为字母,要求尽可能短 ( 在变量表后对整个算法进行...原创 2019-08-27 19:29:08 · 734 阅读 · 0 评论 -
数据结构(一)数据结构基本概念
数据结构概念基本概念数据计算机程序处理对象,能被计算机识别并输入给计算机处理的符号集合(计算机中可操作对象,能被计算机识别并处理)简单:整数,实数,字符串等(数值类型可以进行数值运算,非数值类型可以通过编码编程字符数据进行处理)复杂:视频,音频,计算机程序,web等(编译生成exe文件时计算机程序即为处理对象)数据元素(顶点,结点等)数据元素是组成数据的,有一定意义的基本单位,常做...原创 2019-08-27 15:02:43 · 297 阅读 · 0 评论