Data Structure
山东科技大学软件工程的数据结构学习笔记
你倒是敲代码啊.
韶光易逝,劝君惜取少年时。
展开
-
Round21—插入类排序
选择题2-1对一组包含10个元素的非递减有序序列,采用直接插入排序排成非递增序列,其可能的比较次数和移动次数分别是:(2分)100, 100 100, 54 54, 63 45, 442-2设有1000个元素的有序序列,如果用二分插入排序再插入一个元素,则最大比较次数是:(2分)1000 999 500 102-3用直接插入排序方法对下面四个序列进行排序(由小到大),...原创 2020-01-08 19:45:56 · 483 阅读 · 0 评论 -
Round20—交换与选择类排序
判断题1-1对N个记录进行堆排序,需要的额外空间为O(N)(F)1-2对N个记录进行简单选择排序,比较次数和移动次数分别为O(N2)和O(N)(T)1-3希尔排序是稳定的算法(F)1-4对N个不同的数据采用冒泡排序进行从大到小的排序,当元素基本有序时交换元素次数肯定最多(F)选择题2-1在快速排序的一趟划分过程中,当遇到与基准数相等的元素时,如果左右指针都会停止移动,...原创 2020-01-08 19:43:38 · 1126 阅读 · 0 评论 -
Round19—hash查找
知识点:知道什么是哈希查找,知道什么情况下产生冲突,知道产生冲突之后的解决方法有几种选择题:2-1散列冲突可以被描述为:(1分)两个元素除了有不同键值,其它都相同 两个有不同数据的元素具有相同的键值 两个有不同键值的元素具有相同的散列地址 两个有相同键值的元素具有不同的散列地址解析:冲突就是两个数据元素经过hash函数计算得到的hash值相同,也就是不同键值的元素具有相同...原创 2019-12-06 12:54:44 · 3321 阅读 · 0 评论 -
十大经典排序算法总结
算法分类:比较类排序:插入排序,选择排序,希尔排序,冒泡排序,快速排序,堆排序,归并排序。时间复杂度算法总结:1.冒泡排序:算法的思想:冒泡排序顾名思义,实际上每一趟之后都会使得当前最大的元素到最后面,也就是最大的次大的等等依次“浮出水面”。算法的描述:比较相邻的两个元素,如果不符合事先约定的大小顺序,我们就交换两个元素 重复比较相邻的两个元素,直到最后一...原创 2019-11-19 22:52:05 · 379 阅读 · 0 评论 -
图论知识点集合
图的定义 1)定义1一个无向图是一个有序的二元组 < V,E >,记作G,其中 (1) V ≠ ø 称为顶点集,其元素称为顶点或结点. (2) E称为边集,它是无序积V&V的多重子集,其元素称为无向边,简称为边.2) 定义2 一个有向图是一个有序的二元组<V,E>,记作D,其中 (1) V ≠...原创 2019-11-14 16:44:41 · 1308 阅读 · 0 评论 -
山科大数据结构练习题(期末复习)集合
下列整理内容仅仅是代表我个人的想法,欢迎大家一起交流学习。数据结构基本概念 算法时间复杂度及空间复杂度 顺序表 链表(1)(单链表) 链表(2)(双链表与循环链表) 线性表及其应用 栈 队列 栈的应用 循环队列及其综合 串 树和二叉树 树和森林 Huffman 树 图的基本概念及遍历 最小生成树 最短路径 拓扑排序及关键路径 顺序查找、二分查找 排序树 ...原创 2019-11-11 20:09:41 · 1679 阅读 · 1 评论 -
插入排序
算法的思想:类似打扑克的时候我们洗扑克牌,我们每一次从后面抽取一张扑克总是跟前面的进行比较,直到找到他的合适位置然后将扑克放在这个位置,为此我们应该保证在想要将第n张牌进行插入的时候,前面的n-1张扑克都是有序的。插入排序:直接插入排序对于每一个元素分为两步。第一步是将前面的元素进行一个后移,目的是空出应该插入的位置。第二步是将待插入元素插到空出来的位置。#include...原创 2019-11-11 19:22:21 · 92 阅读 · 0 评论 -
Round18—排序树
知识点:知道什么是排序树。单选题:2-1若二叉搜索树是有N个结点的完全二叉树,则不正确的说法是:(1分)所有结点的平均查找效率是O(logN) 最小值一定在叶结点上 最大值一定在叶结点上 中位值结点在根结点或根的左子树上解析:首先是审题,这个题说比仅仅是搜索树而且是一个完全二叉树。那么我们知道这时的时间复杂度就是O(logN)的。因为排序树的特点就是左边小右边大,因...原创 2019-11-10 21:48:54 · 2826 阅读 · 0 评论 -
Round17—顺序查找、二分查找
知识点:知道什么是顺序查找,什么是二分查找,知道判定树,知道二分查找的最大比较次数是单选题:2-1已知一个长度为16的顺序表L,其元素按关键字有序排列。若采用二分查找法查找一个L中不存在的元素,则关键字的比较次数最多是:(2分)4 5 6 7解析:根据上面的公式我们知道第二个是对的。2-2用二分查找从100个有序整数中查找某数,最坏情况下需要比较的次数是:(2分)...原创 2019-11-09 16:51:38 · 5478 阅读 · 0 评论 -
Round16—拓扑排序及关键路径
知识点:知道图谱排序采用的图论原理,知道什么是关键路径单选题:2-1在AOE网中,什么是关键路径?(1分)最短回路 最长回路 从第一个事件到最后一个事件的最短路径 从第一个事件到最后一个事件的最长路径解析:关键路径在AOE网当中表示的就是项目最终完成的顺序,显然一个工程的完成必须是这个工程的最后一个项目完成才行,因此关键路径就是第一个事件(起始事件)到最后一个事件(结束事...原创 2019-11-09 16:30:23 · 2638 阅读 · 0 评论 -
Round15—最短路径
判断题:1-1在一个有权无向图中,若b到a的最短路径距离是12,且c到b之间存在一条权为2的边,则c到a的最短路径距离一定不小于10。(T)解析:我们首先来分析b->a有几种可能,首先是b到a有直接的路径,其次b通过其他的结点到达a点。如果是b通过c点到达a点我们就可以知道,min{b->c}+min{c->a}>=12;但是我们知道min{b->c...原创 2019-11-02 19:13:02 · 4256 阅读 · 0 评论 -
Round14—最小生成树
知识点:知道什么是最小生成树,知道最小生成树的两种算法。最好是两种都知道。单选题:1-1给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:(3分)22 20 15 8解析:在做选择题的时候,我更倾向与kruskal算法。2-3给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:(3分)24 23 18 17解析:我们按照贪心的思想,也就是kru...原创 2019-11-02 18:38:24 · 4223 阅读 · 0 评论 -
Round13—图基本概念及图的遍历
判断题:1-1无向连通图至少有一个顶点的度为1。(F) (1分)解析:无向图连通只要保证每对接点都可达即可,因此我们考虑,两个节点的图,两个节点之间有2个重边,因此题设是不成立的。1-2用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关。(F) (1分)解析:使用邻接表占用空间与这个图是有向图还是无向图有关。如果是无向图,那么空间就是n+2e,如果是有向图就是...原创 2019-10-31 17:40:58 · 2367 阅读 · 0 评论 -
Round12—Huffman 树
判断题:1-1对N(≥2)个权值均不相同的字符构造哈夫曼树,则树中任一非叶结点的权值一定不小于下一层任一结点的权值。 (T)解析:考察哈弗曼树的构造方法,哈弗曼树的构造思想就是贪心的思想,每次选择权值最小的两个节点来形成新的节点,自底向上建树,因此对于一棵哈弗曼树来说,树中任一非叶节点的权值一定不小于下一层的任意节点的权值。单选题:2-1对N(N≥2)个权值均不相同的字符构造哈夫曼...原创 2019-10-24 16:33:38 · 7502 阅读 · 2 评论 -
Round12—树和森林
判断题:1-1对于一个有N个结点、K条边的森林,不能确定它共有几棵树。(F) (2分)解析:我们假设有m棵树,假设第i棵树的节点数为ni,那么第i棵树的边数为ni-1。那么我们可以知道(n0 - 1) + (n1 - 1) + ...... + (nm - 1) = K因此N-m=K,于是我们可以得出结论对于n结点k条边的森林,一共有n-k棵树。单选题:2-1具有1102个...原创 2019-10-20 21:22:21 · 3656 阅读 · 0 评论 -
Round11—树和二叉树
知识点:简单的说一下吧,你需要知道一些概念(例如满二叉树,正则二叉树,孩子结点等等),以及一些离散数学图论的知识。判断题:1-1某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无右孩子(T)。(2分)解析:首先我们需要知道,如果给出的遍历当中无重复(也就是每个节点的数据域是不同的),那么我们知道中序遍历与后续遍历或者是知道中序遍历与先序遍历,我们都可以唯一确定一...原创 2019-10-17 21:09:29 · 1608 阅读 · 0 评论 -
7-1 树的同构 (25 分)
给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N(≤...原创 2019-10-17 17:17:36 · 1702 阅读 · 0 评论 -
Round 2—算法的复杂度
声明:在本文章当中的基本执行次数计算时,求和边界并没有做出准确区别,仅仅是估计。知识点:时间复杂度的意义:同样的问题,就拿寻找最短路来说有各种各样的算法可以做到,他们在时间与空间上的复杂度都不尽相同,但是在一定数据规模下有的算法效率高,有的算法效率低。如果我们熟悉算法的各种复杂度,就可以根据数据的规模选择最为合适的算法,甚至是在原有算法的基础上进行修改。因此时间复杂度可以认为是衡量算法...原创 2019-08-20 10:30:52 · 1286 阅读 · 0 评论 -
Round2—顺序表
知识点:顺序表也就是线性表的顺序表示,线性表的顺序表示指的是用一组连续的存储单元一次存储线性表的数据元素。也就是说顺序表的逻辑关系与物理关系是一致的,各项数据元素在逻辑上相邻,在物理存储上也相邻。由于顺序表的这种特性如果我们假设第一个元素的存储地址是LOC(a1),每个数据元素占用l个存储单元,那么我们可以知道:LOC(ai)= LOC(a1)+(i - 1)* l。如果我们知...原创 2019-09-09 20:52:13 · 1651 阅读 · 0 评论 -
Round3—链表(1)(单链表)
声明:本篇博客,仅仅是记录平常的习题,不提倡从这里抄袭或者是贴代码,如果被查重,后果自负。前置知识点:点我判断:1-1在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。(T) (1分)解析:在单链表当中访问结点需要依次访问每一个结点才能找到想要的结点,因为单链表并不是顺序表那样随机存储,不能通过基地址加上偏移量来直接访问,因此访问结点是O(n)。...原创 2019-09-15 20:55:12 · 1775 阅读 · 0 评论 -
Round4—链表(2)(双链表与循环链表)
声明:本博客的图片来自百度,如果侵权请联系我,我删掉。知识点:先顾名思义,自己理解一下双链表与循环链表吧,具体的知识点有点碎,下面咱们就题说。练习题:选择题:2-1对于一非空的循环单链表,h和p分别指向链表的头、尾结点,则有:(2分)p->next == h p->next == NULL p == NULL p == h解析:单循环链表就是单向的循...原创 2019-09-16 10:08:39 · 1520 阅读 · 0 评论 -
j7-2 一元多项式的乘法与加法运算 (20 分)(java)
题目大意设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 ...原创 2019-09-18 23:20:33 · 455 阅读 · 2 评论 -
Round5—线性表及应用
选择题:2-1采用多项式的非零项链式存储表示法,如果两个多项式的非零项分别为N1和N2个,最高项指数分别为M1和M2,则实现两个多项式相乘的时间复杂度是:(2分)O(N1×N2) O(M1×M2) O(N1+N2) O(M1+M2)解析:要实现两个多项式的乘法,需要让一个多项式的每一项乘以另外一个多项式的每一项...原创 2019-09-19 17:10:18 · 4263 阅读 · 0 评论 -
Round6—栈
知识点:栈是一种线性的数据结构,他满足后进先出(LIFO)。栈作为一种线性的数据结构,显然它具有唯一的起始节点,唯一的尾结点,并且除首尾之外都具有唯一的直接前驱与唯一的直接后继。一定要搞清楚逻辑关系,这样在栈的实现上会简单很多。判断题:1-1通过对堆栈S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。输出的序...原创 2019-09-25 21:26:05 · 947 阅读 · 0 评论 -
KMP算法(串的模式匹配)
在学习KMP算法之前还是希望能够理解BF算法,也就是暴力的算法。如果感到不适应还希望坚持一下,也许下一秒你就懂了。前置概念:在说kmp算法之前我们先介绍介个概念.1.文本串:文本串就是我们所说的主串。2.模式串:模式串就是我们所说的子串。(那么kmp算法实现的就是要在文本串当中查找模式串的位置)。3.前缀和后缀:假设现在有一个字符串s,长度是n。①前缀:那么我们说字...原创 2019-09-27 19:43:08 · 1452 阅读 · 0 评论 -
Round7—队列
知识点:简单说一下吧,知道队列与栈的区别,队列是先进先出,栈是后进先出。如果是用顺序表实现栈与队列:在队列当中有两个指针,分别是front指针指向队首元素,rear指针指向对尾元素的后面,也就是待插入位置。在栈当中也是有两个指针,分别是base指针指向栈底,top指针指向栈顶元素的上面,也就是待插入位置。选择题:2-1为解决计算机主机与打印机之间速度不匹配问题,通常设置一个...原创 2019-09-30 18:27:33 · 850 阅读 · 0 评论 -
Round8—栈的应用
选择题:2-1线性表、堆栈、队列的主要区别是什么?(1分)线性表用指针,堆栈和队列用数组 堆栈和队列都是插入、删除受到约束的线性表 线性表和队列都可以用循环链表实现,但堆栈不能 堆栈和队列都不是线性结构,而线性表是解析:根据定义可以很简单的选出第二个是正确的。编程题:7-2符号配对(20分)请编写程序检查C语言源程序中下列符号是否配对:/*与*/、(与)、[与]、...原创 2019-09-30 18:49:02 · 1191 阅读 · 0 评论 -
Round9—循环队列及综合
判断题:1-1所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。(F) (1分)解析:循环队列是一个抽象的数据结构,而单向循环链表和循环数组都是具体的实现方法并不是数据结构的本身。1-2在用数组表示的循环队列中,front值一定小于等于rear值。(F) (1分)解析:由于出队与入队操作front = (front+1)% n,rear = (rear + 1)% n;...原创 2019-10-08 12:55:25 · 8653 阅读 · 2 评论 -
Round10—串
知识点判断题:1-1假设模式串是abababaab,则KMP模式匹配算法中的next[j] =0 1 1 2 3 4 5 6 2(T) (2分)解析:求next数组我们用前缀后缀最大公共元素长度进行手动求解。在这里这个题目并没有说明串的存储下标是从0开始还是1开始。如果是下标从0开始那么next数组就是-1 0 0 1 2 3 4 5 1。如果是下标从1开始就是0 1 1...原创 2019-10-08 16:48:08 · 2221 阅读 · 0 评论 -
Round 1—数据结构基本概念
知识点:数据结构研究的内容:针对非数值计算的程序设计问题,研究计算机操作对象以及他们之间的关系和运算等的学科。数据结构涵盖的内容:1.逻辑结构(集合,线性结构,树形结构,图形结构):①线性结构(线性表,栈,队列,串,数组)②非线性结构(树结构,图结构)2.物理(存储)结构:顺序结构,链式结构,索引结构,散列结构3.数据运算插入,删除,修改,查找,排序基...原创 2019-09-02 10:56:14 · 1163 阅读 · 2 评论