【数据结构】PTA 选择题\主观题

绪论

通常把数据元素之间的这种关系称为结构

数据结构相同,对应的存储结构也相同. X
如线性表可以线性也可以链式。

逻辑上可将数据结构分为( )线性结构和非线性结构。

算法的时间复杂度与( )有关。问题规模
就是一道题的数据量

某算法的时间复杂度是O(n​2​​ ),表明该算法的 执行时间与n​2​​ 成正比

算法+数据结构=程序

求时间复杂度
O(log3n);

i=1;
while(i<=n)
    i=i*3;

O(1);
常数阶,10次100次都是常数,无变量惹

x=90; y=100; 
while(y>0)
if(x>100)
 {x=x-10;y--;}
else x++;

O(n1/2)

x=n; //n>1
y=0;
while(x≥(y+1)* (y+1))
    y++;

线性表

线性表的逻辑顺序与物理顺序总是一致的。 X
线性和链式的物理顺序不一致

在这里插入图片描述
举个例子:
a0 a1 a2 a3
i n-1
删除a2,移动1下;即3-2==n-1-i
一个对比:
在这里插入图片描述
其实就是:尾巴-i

线性表:删除,平均移动,(n-1)/2;

某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为:144.

第1个元素从100开始,即*100+(n-1)4=100; 答案为144. 要先用第一个推出一个公式来

在单链表中,增加一个头结点的最终目的是为了 方便运算的实现

在链表中若经常要删除表中最后一个结点或在最后一个结点之后插入一个新结点,则宜采用()存储方式 用尾指针标识的循环单链表

将长度为n的单链表连接在长度为m的单链表之后的算法的时间复杂度为 O(m)

可以用带表头附加结点的链表表示线性表最主要的好处是 使空表和非空表处理统一
都是一个头结点往下指

在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行()操作与链表的长度有关 删除单链表中的最后一个元素

栈和队列

队列和栈都是运算受限的线性表,只允许在表的两端进行运算。 X 插入删除受限而不是运算受限。

若栈采用顺序存储方式存储,现两栈共享空间V[m]:top[i]代表第i(i=1或2)个栈的栈顶;栈1的底在V[0],栈2的底在V[m-1],则栈满的条件是:
top[1]+1==top[2]

两个栈贴着,想象一下。

线性表、堆栈、队列的主要区别是什么?堆栈和队列都是插入、删除受到约束的线性表

若采用带头、尾指针的单向链表表示一个堆栈,那么该堆栈的栈顶指针top应该如何设置?将链表头设为top

所谓“循环队列”是指用单向循环链表 或者循环数组表示的队列。 X
正确:循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。

从一个顺序队列中删除元素时,首先要 取出队首指针所指位置上的元素。
联系代码:给e赋值再删

在一个顺序存储的循环队列中,若队尾指针指向队尾元素的后一个位置,则队头指针一般指向队头元素的 当前位置
后面是虚位以待,所以前面是实位以待。

在少用一个元素空间的循环队列(m为最大队列长度)是满队列的条件( ) (rear+1)%m==front;

判断一个循环队列QU(最多元素为MaxSize)为空的条件是() QU.front == QU.rear

二叉树

二叉树不是树的特殊情况。 T 二叉树左右结点有序,但树的结点无序。

在含有n个结点的树中,边数只能是n-1条。T

若一个结点是某二叉树的中序遍历序列的最后一个结点,则它必是该树的前序遍历序列中的最后一个结点。 X 若没有右结点呢?是错的!

一个对比:某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无右孩子。

二叉树为空”意味着二叉树() 。
没有结点

一棵二叉树中,双分支结点数为15,单分支结点数为30,则叶子结点数为()个。 16
叶子=度为2的+1

以二叉链表作为二叉树的存储结构,在具有 n 个结点的二叉链表中(n>0),空链域的个数为 __ n+1 直接举一个例子。

设二叉树的深度为h,且只有度为1和0的结点,则此二叉树的结点总数为()h
只有一个叶子结点。然后举个例子。

任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序()。 不发生改变

二叉树若用顺序存储结构(数组)存放,则下列四种运算中的()最容易实现 层次遍历二叉树

对二叉树的结点从1开始进行编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()遍历实现编号 后序
结点>右>左 即后序反过来

在二叉树的二叉链表结构中,指针p所指结点为叶子结点的条件是( )

p->lchild==NULL && p->rchlid==NULL

注意有左右!

对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,所有顶点邻接表的边结点总数为 2e
你指我,我指你,所以是2e

假设一个有n个顶点和e条弧的有向图用邻接表表示,则删除与某个顶点相关的所有弧的时间复杂度是 O(n+e)
记法:n和e都是变量,他们都要遍历一遍,所以O(n+e)

设有向图的顶点个数为n,则该图最多可以有()条弧。 n(n-1)
一个有n个顶点的无向图最多有()条边。 n(n-1)/2

在一个图中,所有顶点的度数之和等于所有边数的()倍 2

G是一个非连通无向图,共有28条边,则该图至少有()个顶点。9
n(n-1)/2-1==28;n向上取整就是9;(本来是八点几,但8肯定不够啊,所以就9)

用邻接表存储图所用的空间大小 与图的顶点数和边数都有关

在N个顶点的无向图中,所有顶点的度之和不会超过顶点数的多少倍? N−1

一个有N个顶点的强连通图至少有多少条边?N
强连通:是有向图!所以可以形成一个环就可

设N个顶点E条边的图用邻接表存储,则求每个顶点入度的时间复杂度为: O(N+E)
求每个和求一个其实都只用全遍历一次就好了,开个数组

若图G为连通图,则G必有唯一的一棵最小生成树。X 最小生成树可以不唯一。

对图的度优先遍历,类似于对树的哪种遍历? 先根遍历
采用邻接表存储的图的广度优先遍历算法类似于二叉树的() 按层遍历

图的BFS生成树的树高比DFS生成树的树高() 小或相等
在这里插入图片描述

BDS——队列

任何一个带权无向连通图的最小生成树——有可能不唯一

最短路:Dijkstra算法,不会算自己到自己。

查找

用二分查找法查找具有n个结点的顺序表时,查找每个结点的平均比较次数是( ) O(log
​2​​n)

若有一个长度为64的有序表,现用二分查找方法查找某一记录,则查找不成功,最多需要比较( )次 7
log2n +1;

我发现PTA上的二分是向下取整的(?)

设有一个已排序的线性表(长度>=2),分别用顺序查找法和二分查找法找一个与K相等的元素,比较的次数分别是S和B,在查找不成功的情况下,S和B的关系是()S>=B
长度为2时相等;

对一个长度为 10 的排好序的表用二分法查找,若查找不成功,至少需要比较的次数是() 3
问的是至少说明可以有不同的情况。举个例子可得。

关于折半查找判定树:

折半查找判定树实际上是一棵二叉排序树,它的中序序列是一个有序序列。可以在树结点上依次填上相应的元素,符合折半查找规则的树即是所求。
来源
在这里插入图片描述

对于一组结点,从空树开始,把他们插入到二叉搜索树中,就建立了一棵二叉搜索树。这时,整个二叉搜索树的形状取决于 结点的输入顺序

二叉树中除叶结点外, 任一结点X,其左子树根结点的值小于该结点(X)的值;其右子树根结点的值≥该结点(X)的值,则此二叉树一定是二叉搜索树。 不存在相同的键值

二叉搜索树的建立:第一个就是根结点了,按顺序来的,不用排序。因为目的是搜索,但也称为二叉排序树

在这里插入图片描述
从一个具有N个结点的单链表中查找其值等于X的结点时,在查找成功的情况下,需平均比较多少个结点? (N+1)/2

在散列表中,所谓同义词就是:具有相同散列地址的两个元素

折半查找与二叉排序树的时间性能有时不相同,因为折半查找要求有序,而二叉排序树直接排,第一个就是根结点

哈希表的平均查找长度是()的函数 哈希表的装填因子
散列表的平均查找长度( ) 与处理冲突方法有关而与表的长度无关

排序

选C是因为AB不存在:
在这里插入图片描述
在这里插入图片描述
下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?(设待排元素个数N>2) 插入排序
可能是对所有已经排序的元素进行一次位移。

就排序算法所用的辅助空间而言,堆排序、快速排序、归并排序的关系是:堆排序 < 快速排序 < 归并排序

对N个记录进行归并排序,归并趟数的数量级是:O(logN)
对N个记录进行归并排序,空间复杂度为:O(N)
下列排序算法中,时间复杂度不受数据初始状态影响,恒为O(NlogN)的是:堆,归并

大根堆的建法
先一个个按顺序写上(不排序),再调整。

采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是:递归次数与每次划分后得到的分区处理顺序无关

一个哈希函数被认为是“好的”,如果它满足条件() 哈希地址分布均匀

好难我直接背答案

在这里插入图片描述
已知一棵完全二叉树的第9层(设根为第1层)有100个叶结点,则该完全二叉树的结点个数最多是 823

在N个顶点的无向图中,所有顶点的度之和不会超过顶点数的多少倍? N−1

一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足只有一个叶子结点

主观题

快排

以第一个为基准数:i从第一个开始,j从最后一个开始。i大于基准就停下,j小于等于基准也停下,一停下就交换,再走。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

karshey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值