【数据结构入门精讲 | 第二篇】考研408、企业面试基础概念习题

数据结构与算法初阶1:算法的时间复杂度和空间复杂度讲解 本节为数据结构与算法初阶篇的第一讲:主要分享复杂度问题。 阅读详情

在上一篇文章中我们学习了数据结构的概念、算法复杂度的概念及其相关计算,这篇文章侧重考研408、企业面试数据结构的导论、算法复杂度等练习。

在这里插入图片描述

判断题

1.时间复杂度是根据算法写成的程序在执行时耗费时间的长度,往往与输入数据的规模有关。(对)

2.斐波那契数列FN的定义为:F0=0, F1=1, F(N)=F(N−1)+F(N−2), N=2, 3, …。用递归函数计算FN的空间复杂度是O(N)。(对)

3.斐波那契数列FN的定义为:F0=0, F1=1, FN=FN−1+FN−2, N=2, 3, …。用循环函数计算FN的时间复杂度是Θ(FN).(错)
解析:在循环函数中,我们通过迭代的方式依次计算每个斐波那契数列的数值,只需要进行 N-1 次迭代即可。故O(N)

4.(NlogN)/1000是O(N)的。(错)
解析:(NlogN)/1000仍然是O(NlogN)级别的,而不是O(N)。因为在计算复杂度时,常数因子和低阶项都可以忽略不计,只考虑最高次项的系数,即1000可忽略。

5.抽象数据类型中,描述数据类型的方法与实现操作的算法和编程语言无关。(对)

6.解决问题的效率,跟数据的组织方式无关。(错)
解析:选择合适的数据结构可以显著提高算法的效率。例如,在查找操作中,使用哈希表可以实现常数时间的查找效率,而使用线性表则需要线性时间。

7.对应同一个数据结构,可以有不同的实现方法。(对)
解析:链表是一种常见的数据结构,它可以用指针来实现,也可以用数组来实现。

8.算法可以没有输入,但是必须有输出。(对)

9.递归程序往往简洁易懂,但占用较大空间。递归层数过大会造成系统堆栈溢出。(对)

10.N^2*logN和N*logN^2具有相同的增长速度。(错)
解析:N*logN^2相当于2N*longN,显然比N^2*logN小。

11.数据类型由数据对象集和数据集合相关联的操作集组成。(对)
解析:比如说数据类型中的整数类型(int),在操作集合方面,int支持的基本算术运算有加、减、乘、除等。

12.抽象数据类型中,描述数据类型的方法与数据存储的物理结构有关。(错)
解析:方法关注的是数据对象的逻辑结构和行为,而数据存储的物理结构则决定了如何在计算机内存中存储和表示这些数据对象。

13.抽象数据类型中,描述数据类型的方法与存放数据的机器有关。(错)
解析:方法关注的是数据对象的逻辑结构和行为,而数据存储的物理结构则决定了如何在计算机内存中存储和表示这些数据对象。

14.算法的优劣与算法描述语言无关,但与所用计算机有关。 (错)
解析:优秀的算法应当在不同计算机环境下都能够展现出高效的特性。

15.空间复杂度是根据算法写成的程序在执行时占用存储单元的长度,往往与输入数据的规模有关。(对)

16.斐波那契数列的递归实现与循环实现的时间复杂度均为O(n)(对)

17.描述抽象数据类型的方法与实现操作的算法无关,与数据存储的物理结构无关(对)

18.for(i=1;i<n;i*=2)
for(j=0;j<i;j++)
a++;
时间复杂度为O(N) (对)

19.与数据元素的形式、内容、相对位置无关的是数据的逻辑结构(对)

20.数据的存储结构包括数据的表示及数据元素的表示(对)

21.链表是链式存储结构,数组是随机存取的存储结构(对,因为访问一个节点不需要遍历之前的节点)

22.栈的栈顶是表首(对)

23.只带头指针的非循环双链表不适合作链队,因为查找队尾指针需要O(n)(对)

24.数据元素可由若干个数据项(data item)组成,数据项是数据的不可分割的具有独立含义的最小标识单位。(对)

25.线性结构的基本特征是:每个元素有且仅有一个直接前驱和一个直接后继。 【解答】错。
每个元素最多只有一个直接前驱和一个直接后继

26.数据结构研究的内容包括数据的逻辑结构、存储结构和数据的运算。(对)

选择题

1.给定程序时间复杂度的递推公式:T(1)=1,T(N)=2T(N/2)+N。则对该程序时间复杂度最接近的描述是:(选D)
A.O(N^2) B.O(N) C.O(logN) D.O(N*logN)
解析:根据递推公式T(N) = 2T(N/2) + N,可以使用主定理(Master Theorem)来求解时间复杂度。递推公式的形式符合主定理的第二种情况:T(N) = aT(N/b) + f(N),其中a=2,b=2,f(N)=N。
根据主定理,时间复杂度可以表示为:

  • 若f(N) = O(N^c) 其中c < log_b(a),则 T(N) = O(N^log_b(a))
  • 若f(N) = Θ(N^c * log^k(N)) 其中c = log_b(a),则 T(N) = O(N^c * log^(k+1)(N))
  • 若f(N) = Ω(N^c) 其中c > log_b(a),且对某个ε > 0,有af(N/b) ≤ εf(N),则 T(N) = Θ(f(N))

在这个递推公式中,a=2,b=2,f(N)=N,因此c=1,log_b(a)=log_2(2)=1,c=log_b(a)。
所以根据主定理,时间复杂度最接近的描述是 D.O(N*logN)。

另一种方法是将T(N/2)替代为含有T(N/4)的式子,再将T(N/4)替代为含有T(N/8)的式子,T(N) = 2T(N/2) + N = 2(2T(N/4) + N/2) + N = 4T(N/4) + 2N = 4(2T(N/8) + N/4) + 2N = 8T(N/8) + 3N = …因此,我们可以得到递推公式的展开形式: T(N) = 2^k T(N/2^k) +kN,当N/2k=1时,即N=2k,解得k=log2(N),最终得到T(N)为O(N*logN)

2.T(n)表示当输入规模为n时的算法效率,以下算法中效率最优的是(选C)。
A.T(n)=2n^2
B.T(n)=3n
log2N
C.T(n)=T(n/2)+1,T(1)=1
D.T(n)=T(n-1)+1,T(1)=1
解析:A复杂度为n的平方;B的复杂度为n*log2N;C的复杂度为log2N;D的复杂度为n;因此时间复杂度最小的为C。

3.下列函数中,哪两个函数具有相同的增长速度:(选B)
A.N^2*logN和N*logN^2
B.N*logN^2和N*logN
C.N和2/N
D.2N和NN
解析:A:N*logN^2化为2N*logN;B的N*logN^2可化为2N*logN,故选B。

4.下列程序段的时间复杂度是(O(N))

int  sum = 0;
for(int i=1;i<n;i*=2)
    for(int j=0;j<i;j++)
        sum++;

外层循环的迭代次数随着i的翻倍而增加,而内层循环的迭代次数等于i。因此,总的迭代次数是n/2 + n/4 + n/8 + … + 1,这个级数的和是约等于2n,所以时间复杂度为O(n)。

在这里插入图片描述

答案选D。解析:要查找一个三维数组中的最小元素,需要遍历每个元素并将其与当前最小值进行比较。因此,至少需要遍历N3个元素才能确定最小值。因此,时间复杂度至少为O(N3)。

6.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着(A)。
A.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致
B.数据元素所包含的数据项的个数要相等
C.数据在同一范围内取值
D.每个数据元素都一样

7.与数据元素本身的形式、内容、相对位置、个数无关的是数据的(D)。
A.存储结构
B.运算实现
C.存储实现
D.逻辑结构

8.空间复杂度分析(阶乘,循环+动态数组版)
下面算法的空间复杂度为 ▁▁▁O(n)▁▁。

double Fac(int n)
{
    int k;
    double p, *a;
    a = (double*)malloc((n + 1) * sizeof(double));
    a[0] = 1.0;
    for (k = 1; k <= n; ++k)
    {
        a[k] = a[k - 1] * k;
    }
    p = a[n];
    return p;
}

解析:每次循环都能得到下一次循环所要参与运算的值,而代码执行了N次,故空间复杂度为O(n)。

9.设 0≤i,k<n,下面这段代码的时间复杂度是:(O(n))

if (i>k) {
    for (j=i; j<n; j++)
        a[j] = a[j-k]+1;
}
else {
    for (j=i; j>0; j--)
        a[j] = a[k-j]+2;
}

解析:判断后执行n次或i次,故时间复杂度为O(n)

10.下面的程序段违反了算法的(有穷性/有限性)原则。

void sam()
{  int n=2;
   while (n%2==0)    n+=2;
   printf(“%d”,n);
}

解析:程序不断执行while循环,违反算法有穷性原则。

算法的原则还包括:确定性(算法的每一步骤都必须明确且无二义性地定义。)、健壮性(一个健壮的算法应该能够在面对非预期的输入时,依然能够给出合理的输出或错误提示,而不会导致系统崩溃或产生不可预料的结果。)、可行性(算法的每个步骤不依赖于任何超出可用资源范围的操作。)

11.数据的存储结构包括 ▁▁A、D▁▁▁。
A.关系的表示
B.操作的实现
C.问题的描述
D.数据元素的表示
解析:A,关系的表示,用于描述数据元素之间的关系,比如链表、树等;D,数据元素的表示,即数据元素的内部结构和属性的表示方式,例如使用结构体或类来表示一个数据元素的各个属性。

编程题

R7-1 最大子列和问题

在这里插入图片描述

给定K个整数组成的序列{ N1, N2, …, NK },“连续子列”被定义为{ Ni, Ni+1, …, Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。

本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:

  • 数据1:与样例等价,测试基本正确性;
  • 数据2:102个随机整数;
  • 数据3:103个随机整数;
  • 数据4:104个随机整数;
  • 数据5:105个随机整数;

输入格式:

输入第1行给出正整数K (≤100000);第2行给出K个整数,其间以空格分隔。

输出格式:

在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。

输入样例:

6
-2 11 -4 13 -5 -2

输出样例:

20
#include <stdio.h>
int main()
{
	int k;scanf("%d",&k);int a[k];
	for(int i=0;i<k;i++)scanf("%d",&a[i]);
	
	int sum=0,t=0;
	for(int i=0;i<k;i++)
	{
		sum+=a[i];
		if(sum>t)//如果原序列加上a[i]会大于原序列
		t=sum;//则更新原序列
		else if(sum<0)
		sum=0;
	}
	printf("%d",t);
}


方法二:
    #include <stdio.h>
int main(){
	int a=0,b=0,c[100001],d,i;
	scanf("%d",&d);
	for(i=0;i<d;i++)
	{
		scanf("%d",&c[i]);
	}
	
	for(i=0;i<d;i++)
	{
		a+=c[i];
		if(a>b)
		{
			b=a;
		}
		else if(a<0)
		{
			a=0;
		}
	}
	
	printf("%d",b);
	return 0; 
}

方法二的思路是:

1.声明变量a和b,并初始化为0。其中,a用于记录当前子数组的和,b用于记录最大子数组的和。

2.使用for循环遍历数组c,将数组c的元素依次输入到c[i]中。

3.使用另一个for循环遍历数组c,计算当前子数组的和。

4.在每一次的循环中,首先将当前元素c[i]加到a上,然后判断a是否大于b。如果a大于b,则将b更新为a的值,表示找到了一个更大的子数组和。

5.然后判断a是否小于0。如果a小于0,则将a重新置为0,表示当前子数组的和已经小于0,无需继续累加。

厦门大学计算机考研分析 人工智能研究院以探索全链条大交叉新型科研模式,引领学校信息学科攀升一流,高质量服务国家/区域经济社会发展为目标,校内赋能优势学科,突出计算机视觉、模式识别、空间数据计算、社交网络分析、人工智能芯片、机器翻译等特色,发挥智能声纳、智能能源动力健康、人工智能芯片半导体制备等交叉优势,提升人工智能学科内涵,形成厦大特色的AI优势方向;PPT内容可以包括但不限于:竞赛和科研经历,实习项目经历,软件、硬件能力,毕设、课程设计、大作业中涉及到调研、自学、代码、硬件等,尽量体现自己解决实际问题的能力; 阅读详情

相关推荐

重邮计算机考研改考408:四专业选择策略与备考指南

计算机专业基础综合(408)作为计算机考研的核心科目,涵盖数据结构、计算机组成原理、操作系统和计算机网络四大基础课程。其命题原理强调知识体系的完整性和综合应用能力,通过全国统一命题确保考试公平性。这一考试模式的技术价值在于能够系统检验考生的计算机科学基础,为研究生阶段的学术研究和工程实践奠定坚实基础。在考研备考场景中,408的复习需要科学的时间分配和策略调整,尤其对于重邮计算机学院新改考408的计算机科学与技术、软件工程等专业,考生需结合自身背景制定个性化备考方案。数据结构中的算法设计和计算机组成原理的数据

weixin_34025051的博客 491

算法的时间和空间复杂度

时间复杂度:根据算法写成的程序在执行时占用存储单元的长度。这个长度往往跟输入数据的规模有关。空间复杂度过高的算法可能会导致使用的内存超限,造成程序正常中断。 时间复杂度:根据算法写成的程序在执行时耗费时间的长度。这个长度往往也与输入数据的规模有关。时间复杂度过高的低效算法可能会导致我们长时间等不到运行结果。 ...

m0_60967241的博客 1453

重庆邮电大学计算机考研408备考指南:四科均衡复习与专业选择

计算机考研408科目涵盖数据结构、计算机组成原理、操作系统和计算机网络四大核心课程,是衡量计算机专业基础能力的重要标准。其命题原理强调知识体系的完整性和交叉应用能力,要求考生不仅掌握单科知识点,还要理解各科目间的内在联系。从技术价值看,408考试能够系统检验学生对计算机系统底层原理、算法设计与网络通信等关键技术的掌握程度,为后续科研或工程实践打下坚实基础。在应用场景上,扎实的408知识体系尤其适合从事系统软件开发、人工智能算法优化、大数据平台构建等方向。以重庆邮电大学为例,其计算机科学与技术、软件工程等专业

weixin_34054866的博客 509

数据结构与算法--概论

数据结构与算法--概论

joker_sxj的博客 7320

计算机考研高效学习路线:从大二到大四的实战规划

本文为计算机专业学生提供了一份从大二到大四的详细考研实战规划。文章强调大二需打好数据结构与C++基础,通过理论结合刷题(如力扣、洛谷)巩固核心;大三深入操作系统、计算机网络与组成原理,并整合知识体系,全力备战初试;大四则聚焦复试准备与软实力提升。规划涵盖了各阶段学习重点、资源推荐及实习、项目等实战经验,旨在帮助学生高效备考,稳步提升竞争力。

weixin_29230805的博客 451

4、I3C协议详解

I3C最初的设计目的是为移动设备创建一个能够使用多个传感器的单一接口。随着现代化移动设备对于传感器数量的增加以及对性能的提高,I2C和SPI已经达到了他们所能支持的临界点,而I3C的出现就是为了解决这一问题,I3C可以在同一根主线上支持更多的传感器设备,而且不会因为要支持中断或睡眠模式而增加额外的逻辑信号。I3C可以在更低功耗的情况下提供更快的传输速率,该特性的提升不止是对移动设备,对其他的嵌入式设备也都是很大的帮助。例如穿戴设备,需要在有限的物理空间中使用多个传感器并且要求更小的耗电。 一、简述..

迟子涵925的博客 2万+

DS_Complexity

斐波那契数列FN​的定义为:F0​=0, F1​=1, FN​=FN−1​+FN−2​, N=2, 3, …斐波那契数列FN​的定义为:F0​=0, F1​=1, FN​=FN−1​+FN−2​, N=2, 3, …给定程序时间复杂度的递推公式:T(1)=1,T(N)=2T(N/2)+N。空间复杂度是根据算法写成的程序在执行时占用存储单元的长度,往往与输入数据的规模有关。T(n)表示当输入规模为n时的算法效率,以下算法中效率最优的是( )。与数据元素本身的形式、内容、相对位置、个数无关的是数据的( )。

m0_61758697的博客 1903

computer planetary——全球生物多样性信息机构 (GBIF)

正如npartitions所表明的,这个Parquet数据集是由许多单独的parquet文件组成的。(GBIF) 是一个由世界各国政府资助的国际网络和数据基础设施,提供记录物种发生的全球数据。重新处理数据的原因有多种,包括主干分类的更改,因此该日期不一定是发生记录最后更改的日期。GBIF 发生数据集结合了来自广泛来源的数据,包括来自自然历史博物馆的标本相关数据、来自公民科学网络的观察和自动环境调查。为了了解最常观察到的物种,我们将对数据集进行分组,并获得每个物种的计数。大多数字段名称对应于。

此星光明博客 1636

算法设计与分析——选择题

14:用分治法解决一个输入规模为 N 的问题时,如果每步都将问题划分为 9 个规模为 N/3 的子问题,并且用 O(N2logN) 的时间治之,则下列哪项最接近总的时间复杂度?16:分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解。若每步将问题分成规模均为N/3的8个子问题,且治而得到解的步骤耗时O(N2logN),则整个算法的时间复杂度为__。A.每步将问题分成规模均为N/3的2个子问题,且治的步骤耗时O(N)

qq_52331221的博客 5899

华为OD机试真题 新系统2026-04-01 Java&Go【计算数列位置N的值】

如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;1、输入M、N两个数,则按照以下规则形成一个数列;两个整数,用逗号分割,分别表示M和N。一个整数,表示数列第N个位置上的数值。2、数列的前M个元素的值为1到M;请计算该数列第N个位置上的数值。N取值范围:1<= N<=50。M取值范围:3<=M<=10。

MISAYAONE的博客 2056

AD18软件——捕捉栅格、电气栅格、可见栅格的意义及设置

本文介绍了PCB设计中的三种栅格功能:可视栅格用于辅助定位(快捷键Shift+Ctrl+G),捕捉栅格控制光标移动间距(快捷键G),电气栅格实现元件自动吸附(快捷键Shift+E)。同时提供了在Altium Designer中快速查找相同网络标号的两种实用方法:Alt+鼠标单击或双击网络。这些功能可显著提高PCB设计效率和准确性。

qq_37999850的博客 646

【数据结构入门精讲 | 第四篇】考研408、企业面试表专项习题

在带哨兵结点的双循环链表中,设链结点的后继指针域为next,前驱指针域为prior,指针header指向哨兵结点,则判断该链表是否为空的表达式为:header->next==header 或 header->prior==header

等风来 4270

Python 控制 Keysight N9010B/N9020/N9030 频谱仪

为什么要实现频谱仪的控制呢?起因是因为我司RF的同事们需要对通信模块进行GSM的带内杂散进行测试,由于该测试的频点涉及900多个,所以急需开发一款自动化测试工具。该工具需同时实现对无线通讯仪和频谱仪的控制,这篇文章主要介绍一下频谱仪的控制!做通信的应该对频谱仪都不陌生,不过我之前做的都是软件相关行业,所以我对频谱仪其实还是很陌生的;不过好在我的同时们都很热心,加上仪器的文档,一段时间下来,也算是熟悉了一些。

xgh1951的博客 1万+

【数据结构入门精讲 | 第十六篇】并查集知识点及考研408、企业面试练习

在许多实际应用场景中,我们需要对元素进行分组,并且在这些分组中进行查询和修改操作。比如,在图论中,我们需要将节点按照连通性进行分组,以便进行最小生成树、最短路径等算法;在计算机视觉中,我们需要将像素进行分组,以便进行图像分割和对象识别等任务。而并查集正是为了解决这些问题而被提出来的一种数据结构。

等风来 4691

DAB协议解读ETSI TS 103 461

数字信号广播( Digital Audio Broadcasting 简称DAB)是继AM、FM传统模拟广播之后的第三代广播--数字信号广播,它提供了接近CD质量的声音,广播及商机无限的附加数据服务,具有抗噪声、抗干扰、抗电波传播衰落、适合高速移动接收等优点,保证固定、携带及移动时接收信号的质量。DAB的原始版本使用MP2音频编解码器。该系统的升级版本于2007年2月发布,称为DAB+,它使用基于改进的离散余弦变换(MDCT)的HE-AACv2(AAC+)音频编解码器。

qflook的博客 4477

YOLO26改进策略【YOLO和Mamba】| CVPR 2025:EfficientViM 压缩隐藏状态空间进行通道混合、单头设计减少内存操作,提升目标检测效率与精度

本文记录的是利用模块优化的目标检测网络模型。EfficientViM Block(基于隐藏状态混合器的状态空间对偶性模块) 的设计旨在,提升特征提取效率,同时兼顾全局依赖捕捉与局部细节保留。本文将深入研究的原理,并将其应用到中,通过重构特征提取流程、减少内存绑定操作、融合多阶段特征,增强模型在资源受限环境下的检测性能与速度。EfficientViM: Efficient Vision Mamba with Hidden State Mixer based State Space DualityEfficie

Limiiiing的博客 399

【数据结构入门精讲 | 第五篇】栈知识点及考研408、企业面试练习

栈是限定仅在栈顶(即表首)进行插入和删除操作的线性表,也称为后进先出(Last In First Out) 的线性表,简称 LIFO 结构。 栈的内部实现原理其实就是数组或链表的操作,而之所以引入 栈 这个概念,是为了将程序设计问题模型化,利用栈的先进后出特性对特定的一些问题进行简化。(栈是线性表的特例) 允许插入和删除元素的一端称为栈顶,另一端称为栈底,不含任何任何数据元素的栈称为空栈。

等风来 4599

STM32入门教程:智能马桶盖控制

通过编写相应的代码,您可以根据需要实现其他功能,例如座圈温度调节和液晶显示屏显示等。初始化配置 首先,使用STM32CubeMX创建一个新的工程,并选择您所使用的STM32单片机型号。智能马桶盖是一种集成了多种功能的智能家居设备,通过控制芯片来实现自动冲水、座圈加热、座圈温度调节等功能。在本教程中,我们将使用STM32系列单片机来控制智能马桶盖的各个功能。以上代码演示了如何通过STM32的GPIO控制引脚来控制智能马桶盖的冲水和座圈加热功能。写代码 接下来,我们将通过编写代码来控制智能马桶盖的各个功能。

2401_85258012的博客 657

【数据结构入门精讲 | 第十八篇】考研408、企业面试图专项练习(一)

在上一篇中我们学习了图的相关知识点,在这一篇中我们进行图的专项练习。选择两城市间最经济的航行路线用迪杰斯特拉算法(对)2从某顶点出发进行深度优先遍历,最先退出dfs过程的是拓扑序列的最后一个顶点。(对)3对任意一个图,从某顶点出发进行一次深度优先或广度优先遍历,可访问图的所有顶点。(错)若存在回路,则结束遍历,剩下的节点就不能被访问。4检查有向图是否存在回路的一种方法是使用无前驱顶点优先算法对有向图进行拓扑排序。( 对 )5邻接矩阵如下:

等风来 4145

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【数据结构入门精讲 | 第六篇】队列知识点及考研408、企业面试练习

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表。

等风来 4625

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【数据结构入门精讲 | 第十九篇】考研408、企业面试图专项练习(二)

作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。 输入格式: 输入第一行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0 ~ (N−1);M是快速道路的条数;S是出发地的城市编号;D是目的地的城市编号。 第二行给出N个正

等风来 3865

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【数据结构入门精讲 | 第十四篇】散列表知识点及考研408、企业面试练习(1)

散列表(Hash Table),也被称为哈希表或散列映射,是一种常用的数据结构之一。它通过将键(key)映射到值(value)来实现高效的数据存储和检索。散列表的主要思想是利用哈希函数将键转换成对应的索引,然后将值存储在该索引位置上。当需要查找或插入元素时,再次使用哈希函数计算出对应的索引,从而快速定位到目标位置。散列表的优势在于具有高效的查找和插入操作。由于直接通过索引进行访问,时间复杂度通常为O(1),即常数时间装填

等风来 4042

【数据结构入门精讲 | 第十五篇】散列表知识点及考研408、企业面试练习(2)

实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。输入格式:输入首先给出一个正整数N(≤105),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆,后面是登陆信息。QQ号码为一个不超过10位、但大于1000(据说QQ老总的号码是1001)的整数。密码为不小于6位、不超过16位、且不包含空格的字符串。

等风来 4139

从LeetCode到考研408:时间/空间复杂度分析,如何成为你编程面试和笔试的“隐形加分项”?

本文深入探讨了时间复杂度和空间复杂度分析在编程面试和考研408中的关键作用,提供了从LeetCode到考研真题的实战指南。通过五步法分析框架、递归算法和嵌套循环的深度剖析,帮助读者掌握复杂度分析的技巧,提升在技术面试和笔试中的竞争力。

weixin_30680385的博客 387

计算机专业大学生如何规划大学四年?(非常详细),零基础入门到精通,看这一篇就够了

计算机专业大学生如何规划大学四年?(非常详细),零基础入门到精通,看这一篇就够了

分享Python知识 3242

2020考研经验分享——致学弟学妹

转眼间,20届考研已经落下帷幕,但21届考研才刚刚开始。今年我的考研成绩还不错 ,分享一下: 科目 分数 政治 72 英语二 73 数学二 117 专业综合 135 总分 397 政治和英语都还在预期之内,数学和专业课其实有些意料之外,尤其是专业课。 数学二今年题确实难,我的大题部分有好几个都没做出来,但是都把能写的写上了,好在我的小题(选择与填空)只错了1题...

AngelLover2017的博客 7916
上一篇: 【数据结构入门精讲 | 第四篇】考研408、企业面试表专项习题
下一篇: 【数据结构入门精讲 | 第十五篇】散列表知识点及考研408、企业面试练习(2)
秋说
秋说 优质创作者: 编程框架、信息安全技术领域 优质创作者: 编程框架、信息安全技术领域
博客等级 码龄4年 3万+粉丝 1906原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

秋说

感谢打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值