当前位置:文档之家› 数据结构与算法总结

数据结构与算法总结

数据结构与算法总结
数据结构与算法总结

数据结构与算法课程总结报告

李登峰

11计本(1)班

1104013038一.前言

学好计算机,主要要从三个方面做起,其中,第一步就是要学好各种语言,这是第一步,对各种语言有一个大体的了解;然后就是数据结构了,它是计算机中的一门核心的课程,也是一门信息计算;在最后本人认为就是算法了,它也是这三部中最难得一步了,要学好计算机,做一名优秀的程序元,这三步是最基本的,然后再是在他们的基础上层层深入。

二.课程总结

第一章交代了该学科的相关概念,如数据、数据元素、数据类型以及数据结构的定义。其中,数据结构包括逻辑结构、存储结构和运算集合。逻辑结构分为四类:集合型、线性、树形和图形结构,数据元素的存储结构分为:顺序存储、链接存储、索引存储和散列存储四类。紧接着介绍了一些常用的数据运算。最后着重介绍算法性能分析,包括算法的时间性能分析以及算法的空间性能分析。

第二章线性表的相关基本概念,如:前驱、后继、表长、空表、首元结点,头结点,头指针等概念。线性表的结构特点,主要是指:除第一及最后一个元素外,每个结点都只有一个前趋和只有一个后继。线性表的顺序存储方式及其在具体语言环境下的两种不同实现:表空间的静态分配和动态分配。静态链表与顺序表的相似及不同之处。线性表的链式存储方式及以下几种常用链表的特点和运算:单链表、循环链表,双向链表,双向循环链表。其中,单链表的归并算法、循环链表的归并算法、双向链表及双向循环链表的插入和删除算法等都是较为常见的考查方式。线性表的顺序存储及链式存储情况下,其不同的优缺点比较,即其各自适用的场合。单链表中设置头指针、循环链表中设置尾指针而不设置头指针以及索引存储结构的各自好处。

第三章链表中数据元素的存储不一定是连续的,还可以占用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除不需要移动元素,给算法的效率带来较大的提高。链表这一章中介绍了链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结构、功能和基本算法。

第四章堆栈与队列是两种运算受限制的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进后出”的规则,对堆栈的操作只能在栈顶进行;而队列要遵循“先进先出”的规则,教材中列出了两种结构的相应算法,如入栈、出栈、入队、出队等。在介绍队列时,提出了循环队列的概念,以避免“假溢出”的现象。

第五章“队列及其应用”主要介绍顺序存储和链接存储方法下的两种队列、顺序(循环)队列和链队列的数据结构、基本运算及其性能分析以及应用。顺序队列(重点是循环队列)和链队列的概念、数据类型描述、数据结构和基本运算算法及其性能分析等。本章同堆栈有点类似,算法思想较为简单,所以能较好掌握;但难点重在循环队列队空、队满的判断条件问题。基数排序有些难度。

第六章介绍了特殊矩阵和广义表的概念与应用。其中,特殊矩阵包括对称矩阵、三角矩阵、对角矩阵和稀疏矩阵,书中分别详细介绍了它们的存储结构。稀疏矩阵的应用包括转置和加法运算等。最后介绍了广义表的相关概念及存储结构,关于它的应用,课本中举了m元多项式的表示问题。本章的重点是相关数据结构的存储结构及其基本运算算法。掌握了特殊矩阵的压缩存储结构,在该存储结构下元素的定位方法,理解了稀疏矩阵的计算和广义表的存储结构。

第七章二叉树的知识是重点内容。在介绍有关概念时,提到了二叉树的性质以及两种特殊的二叉树:完全二叉树和满二叉树。接着介绍二叉树的顺序存储和链接存储以及生成算法。重点介绍二叉树的遍历算法(递归算法、先序、中序和后序遍历非递归算法)和线索二叉树。二叉树的应用:基本算法、哈弗曼树、二叉排序树和堆排序。本章二叉树节点的插入和删除,平衡二叉排序树较为复杂,未能掌握好。

第八章“树和森林及其应用”介绍树和森林的数据结构、基本算法及其性能分析,树和森林与二叉树之间的转换算法等,在此基础上介绍树的应用---B-树,应用B-树来实现数据元素的动态查找。本章基本掌握树和森林的概念和性质、数据结构、树的基本算法及性能分析,树和二叉树间的转换及其算法,并用应用B-树来实现数据元素的动态查找未能掌握好。

“散列结构及其应用”是逻辑结构“集合型”的数据元素在散列存储方法下的数据结构及其应用知识内容。主要介绍散列函数的概念、散列结构的

概念、散列存储结构的概念---散列表、散列函数和散列表中解决冲突的处理方法---开放定址法、链地址法以及散列表的基本算法及其性能分析。本章概念较为多,所以掌握不太好。

第九章散列结构的概念及其存储结构、散列函数、两种冲突处理方法、线性探测散列和链地址散列的基本算法以及散列结构的查找性能分析。图的存储结构的知识点有:邻接矩阵、邻接表、逆邻接表、十字链表和邻接多重表。图的遍历包括图的深度优先搜索遍历和广度优先搜索遍历。其余知识点有:有向图、连通图、生成树和森林、最短路径问题和有向无环图及其应用。有向无环图重点理解AOV网和拓扑排序及其算法。通过本章学习,我掌握了图的概念和基本性质,图的存储结构(邻接矩阵和邻接表)及其基本算法、图的遍历及算法。了解了图的逆邻接表的存储结构,关键路径求解算法未能掌握好,不能灵活运用图的不同数据结构和遍历算法解决复杂的应用问题。

第十章“图及其应用”是逻辑结构为“图形”的数据结构及其应用知识内容,主要介绍图的定义和基础知识,图的2种存储结构。图的基本算法以及图的典型应用问题(最小生成树、最短路径、拓扑排序和关键路径等)。通过本章学习,我掌握了图的概念和基本性质,图的存储结构(邻接矩阵和邻接表)及其基本算法、图的遍历及算法。了解了图的逆邻接表的存储结构,关键路径求解算法未能掌握好,不能灵活运用图的不同数据结构和遍历算法解决复杂的应用问题。

三.学习掌握情况

第一章中我对数据和数据结构的概念理解较为透彻,熟悉数据结构的逻辑结构和存储结构。而对算法的时间、空间性能分析较为模糊,尤其是空间性能分析需要加强。

第二章,顺序表的概念、生成算法理解较为清晰,并且熟悉简单顺序查找和二分查找,对分块查找较为含糊;排序问题中,由于冒泡排序在大一C语言课上已经学习过,再来学习感觉很轻松。对插入排序和选择排序理解良好,但是,在实际运用中仍然出现明显不熟练的现象。由于在归并排序学习中感觉较吃力,现在对这种排序方法仍然非常模糊,所以需要花较多的时间来补习。此外串的模式匹配也是较难理解的一个地方。

第三章,除对双向循环链表这一知识点理解困难之外,其他的知识

点像单链表的建立和基本算法等都较为熟悉。

第四五章有关堆栈以及队列的知识点比较少,除有关算法较为特殊以外,其余算法都是先前学过的顺序表和链表的知识,加上思想上较为重视,因此这部分内容是我对全书掌握最好的一部分。不足之处仍然表现在算法的性能分析上。

第六章较为吃力的部分在于矩阵的应用上,尤其对矩阵转置算法的C 语言描述不太理解。稀疏矩阵相加算法中,用三元组表实现比较容易理解,对十字链表进行矩阵相加的方法较为陌生。

第七章是全书的重点,却也有一些内容没有完全理解。在第一节基本概念中,二叉树的性质容易懂却很难记忆。对二叉树的存储结构和遍历算法这部分内容掌握较好,能够熟练运用,而对于二叉树应用中的哈弗曼树却比较陌生。

第八章内容较少,牵涉到所学的队列的有关内容,总体来说理解上没有什么困难,问题依旧出现在算法的性能分析上。

第九章理解比较完善的知识点有:基本概念和存储结构。散列函数中直接定址法和除留余数法学得比较扎实,对数字分析法等方法则感觉较为陌生。对两种冲突处理的算法思想的理解良好,问题在于用C语言描述上。

第十章,图及其应用中,图的定义、基本运算如图的生成等起初理解有困难,但随着学习深入,对它的概念也逐步明朗起来。邻接矩阵、邻接表和逆邻接表掌握较好,而对十字链表和邻接多重表则较为陌生。感觉理解较为吃力的内容还有图的遍历(包括深度和广度优先遍历),最小生成树问题也是比较陌生的知识点。

四.心得体会

数据结构是一个比较抽象的东西,他的任务是从各种实际的问题中归纳,抽象出个对象的特征,对象之间的相互关系,在选择合适的数据结构来组织,、储存和选择相应的算法。其中,最重要的还是一种抽象思维的转换,需要有一种归纳的思维,在初学的时候,我选择了在理解的基础上背一些比较典型的数据结构,比如:线性表,队,饯的储存方法等,最后发现一些其他的东西也可以类似。用C语言描述数据结构可

以分为以下几部分:线性表,队,饯,广义表,然后是树,图,最后还有递归,串,查找,排序。其中较为典型的例子有走迷宫,汉诺塔,出入队列哈夫曼编码等。现行表示具有相同特征的数据元素的一个有限序列,储存方式有两种:顺序储存——顺序表,链式储存——链表。

学习了本书我对数据结构与算法有了更深的理解,数据结构是相互之间存在的一种或多种特定关系的数据元素的集合。包括4类基本的结构:集合、线形结构、树形结构、图状或网状结构。通俗点就是数据的逻辑结构,比方说这些数据在内存中以什么样的结构存放。算法实际是编程过程中完成一件事采用的方法,比方说现实生活中做数学题时两个人都将题完成但是他们之间有一个用的时间很短就是因为采用了简便的方法。同样在编程过程中采用好的算法可以降低程序的时间和空间复杂度。学习本书为以后操作系统、编译原理、数据库管理系统、软件工程、人工智能等的学习都是十分有益的,而且所有的计算机系统软件和应用软件都要用到各种类型的数据结构。

五.教学建议

建议在上课过程中加大随堂练习的分量,以便学生能当堂消化课堂上学习的知识,也便于及时了解学生对知识点的掌握情况,同时有助于学生保持良好的精神状态。

建议在课时允许的情况下,增加习题课的分量,通过课堂的习题讲解,加深对知识点的掌握,同时对各知识点的运用有一个更为直观和具体的认识。

以上便是我对《数据结构与算法》这门课的学习总结,我会抓紧时间将没有吃透的知识点补齐。今后我仍然会继续学习,克服学习中遇到的难关,在打牢基础的前提下向更深入的层面迈进!

数据结构与算法习题及答案

第1章绪论 习题 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 3.简述逻辑结构的四种基本关系并画出它们的关系图。 4.存储结构由哪两种基本的存储方法实现 5.选择题 (1)在数据结构中,从逻辑上可以把数据结构分成()。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 (2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。 A.存储结构B.存储实现 C.逻辑结构D.运算实现 (3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。 A.数据具有同一特点 B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等 (4)以下说法正确的是()。 A.数据元素是数据的最小单位 B.数据项是数据的基本单位 C.数据结构是带有结构的各数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 (5)以下与数据的存储结构无关的术语是()。 A.顺序队列B.链表C.有序表D.链栈 (6)以下数据结构中,()是非线性数据结构 A.树B.字符串C.队D.栈 6.试分析下面各程序段的时间复杂度。 (1)x=90;y=100; while(y>0) if(x>100) {x=x-10;y--;} elsex++; (2)for(i=0;i

数据结构与算法基础知识总结

数据结构与算法基础知识总结 1 算法 算法:是指解题方案的准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。 算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度是指执行算法所需要的计算工作量。 算法空间复杂度是指执行这个算法所需要的内存空间。 2 数据结构的基本基本概念 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。 数据结构是指相互有关联的数据元素的集合。 数据的逻辑结构包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。 数据的存储结构有顺序、链接、索引等。 线性结构条件:

(1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 3 线性表及其顺序存储结构 线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。 非空线性表的结构特征: (1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。 线性表的顺序存储结构具有以下两个基本特点: (1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 ai的存储地址为:adr(ai)=adr(a1)+(i-1)k,,adr(a1)为第一个元素的地址,k代表每个元素占的字节数。 顺序表的运算:插入、删除。(详见14--16页) 4 栈和队列 栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。 栈按照“先进后出”(filo)或“后进先出”(lifo)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。 栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。 队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。rear指针指向队尾,front指针指向队头。 队列是“先进行出”(fifo)或“后进后出”(lilo)的线性表。 队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。循环队列:s=0表示队列空,s=1且front=rear表示队列满

数 据 结 构 与 算 法 从 零 开 始 学 习 ( 2 0 2 0 )

用Python解决数据结构与算法问题(一):Python基础 python学习之路 - 从入门到精通到大师 一、你【实战追-女生视频】好世界 Python是一种现代的,易于学习的面向对象的编程语言。它具有一组强【扣扣】大的内置数据类型和易于使用的控件结构。由于是解释【1】型语言,因此通过简单地查看和描述交互式会话,更容易进行【О】检查。所以好多人会和你说推荐你使用 anaconda 的,比如:【⒈】深度学习入门笔记(五):神经网络的编程基础。 在 j【б】upyter notebook 中是提示输入语句,然后计算你提供的Py【9】thon语句。例如: pri【5】nt("Hello,World") Hel【2】lo,World 打印结果【6】: print("".join("Hello World")) 二、数据入门 因为Python是支持面向对象的编程范式,这意味着Python认为在解决问题的过程中的重点是数据。在任何面向对象的编程语言中,类都是被定义用来描述数据的外观(状态)和数据能做什么(行为)。因为类的用户只看数据项的状态和行为,所以类类似于抽象的数据类型。数据项在面向对象的范式中称为对象,对象是类的实例。

Python有: 两个主要的内置数字类,分别是 int (整型数据类型)和 float (浮点数据类型)。 标准的算术运算,+,-,*,-,和 **(取幂),可以用括号强制操作的顺序来规避正常的操作符优先级。 其他很有用的操作是余数(模组)操作符%、和整数除法--。注意,当两个整数相除,结果是一个浮点数。整数除法运算符通过截断所有小数部分来返回商的整数部分。 布尔数据类型,作为Python bool类的实现,在表示真值时非常有用。 布尔数据 在标准的布尔操作中,and、or、not,布尔类型的状态值可能是True 和 False。 False or True not (False or True) True and True 布尔数据对象也被用作比较运算符的结果,例如相等(==)和大于()。 关系运算符和逻辑运算符 此外,关系运算符和逻辑运算符可以组合在一起形成复杂的逻辑问题。下表展示了关系和逻辑运算符: 标识符在编程语言中作为名称使用。在Python中,标识符以字母

数据结构与算法分析习题与参考答案

大学 《数据结构与算法分析》课程 习题及参考答案 模拟试卷一 一、单选题(每题 2 分,共20分) 1.以下数据结构中哪一个是线性结构?( ) A. 有向图 B. 队列 C. 线索二叉树 D. B树 2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点, 则执行如下( )语句序列。 A. p=q; p->next=q; B. p->next=q; q->next=p; C. p->next=q->next; p=q; D. q->next=p->next; p->next=q; 3.以下哪一个不是队列的基本运算?() A. 在队列第i个元素之后插入一个元素 B. 从队头删除一个元素 C. 判断一个队列是否为空 D.读取队头元素的值 4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成( ) 个不同的字符串? A.14 B.5 C.6 D.8 5.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。 以下6-8题基于图1。 6.该二叉树结点的前序遍历的序列为( )。 A.E、G、F、A、C、D、B B.E、A、G、C、F、B、D C.E、A、C、B、D、G、F D.E、G、A、C、D、F、B 7.该二叉树结点的中序遍历的序列为( )。 A. A、B、C、D、E、G、F B. E、A、G、C、F、B、D C. E、A、C、B、D、G、F E.B、D、C、A、F、G、E 8.该二叉树的按层遍历的序列为( )。

A.E、G、F、A、C、D、B B. E、A、C、B、D、G、F C. E、A、G、C、F、B、D D. E、G、A、C、D、F、B 9.下面关于图的存储的叙述中正确的是( )。 A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关 B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关 C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关 D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关 10.设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建 堆的结果?( ) A. a,g,h,m,n,p,q,x,z B. a,g,m,h,q,n,p,x,z C. g,m,q,a,n,p,x,h,z D. h,g,m,p,a,n,q,x,z 二、填空题(每空1分,共26分) 1.数据的物理结构被分为_________、________、__________和___________四种。 2.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为_________, 在表尾插入元素的时间复杂度为____________。 3.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是________________; 删除一个结点时,需要执行的操作是______________________________(假设栈不空而 且无需回收被删除结点)。 4.对于一棵具有n个结点的二叉树,一个结点的编号为i(1≤i≤n),若它有左孩子则左 孩子结点的编号为________,若它有右孩子,则右孩子结点的编号为________,若它有 双亲,则双亲结点的编号为________。 5.当向一个大根堆插入一个具有最大值的元素时,需要逐层_________调整,直到被调整 到____________位置为止。 6.以二分查找方法从长度为10的有序表中查找一个元素时,平均查找长度为________。 7.表示图的三种常用的存储结构为_____________、____________和_______________。 8.对于线性表(70,34,55,23,65,41,20)进行散列存储时,若选用H(K)=K %7 作为散列函数,则散列地址为0的元素有________个,散列地址为6的有_______个。 9.在归并排序中,进行每趟归并的时间复杂度为______,整个排序过程的时间复杂度为 ____________,空间复杂度为___________。 10.在一棵m阶B_树上,每个非树根结点的关键字数目最少为________个,最多为________ 个,其子树数目最少为________,最多为________。 三、运算题(每题 6 分,共24分) 1.写出下列中缀表达式的后缀形式: (1)3X/(Y-2)+1 (2)2+X*(Y+3) 2.试对图2中的二叉树画出其: (1)顺序存储表示的示意图; (2)二叉链表存储表示的示意图。 3.判断以下序列是否是小根堆? 如果不是, 将它调 图2 整为小根堆。 (1){ 12, 70, 33, 65, 24, 56, 48, 92, 86, 33 } (2){ 05, 23, 20, 28, 40, 38, 29, 61, 35, 76, 47, 100 } 4.已知一个图的顶点集V和边集E分别为: V={1,2,3,4,5,6,7};

数据结构与算法复习题10(C语言版)

习 9解答 判断题: 1.用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度。 答:FALSE (错。链表表示的有序表不能用折半查找法。) 2.有n 个数据放在一维数组A[1..n]中,在进行顺序查找时,这n 个数的排列有序或无序其平均查找长度不同。 答:FALSE (错。因顺序查找既适合于有序表也适合于无序表;对这两种表,若对于每个元素的查找概率相等,则顺序查找的ASL 相同,并且都是(n+1)/2;对于查找概率不同的情况,则按查找概率由大到小排序的无序表其ASL 要比有序表的ASL 小。) 3.折半查找是先确定待查有序表记录的范围,然后逐步缩小范围,直到找到或找不到该记录为止。( ) 答:TRUE 4.哈希表的查找效率主要取决于哈希表哈希表造表时选取的哈希函数和处理冲突的方法。 答:TRUE 5.查找表是由同一类型的数据元素(或记录)构成的集合。 答:TRUE 单选题: 6.对于18个元素的有序表采用二分(折半)查找,则查找A[3]的比较序列的下标为( )。 A. 1、2、3 B. 9、5、2、3 C. 9、5、3 D.9、4、2、3 答:D (第一次??2/)181(+ = 9,第二次??2/)81(+ = 4,第三次??2/)31(+ = 2, (第四次??2/)33(+ = 3,故选D. 7. 顺序查找法适合于存储结构为____________的线性表。 A.散列存储 B.顺序存储或链式存储 C.压缩存储 D.索引存储 答:B 8.对线性表进行二分查找时,要求线性表必须( )。 A .以顺序方式存储 B. 以链接方式存储 C .以顺序方式存储,且结点按关键字有序排序 D. 以链接方式存储,且结点按关键字有序排序 答:C 9.设哈希表长m=14,哈希函数为H(k) = k MOD 11。表中已有4个记录(如下图

VB笔记-数据结构和算法

数据和算法结构 考点1 算法的基本概念 (什么是算法?计算机的解题过程实际上是在实施某种算法,这种算法称为计算机算法。) 1.算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。 2.算法的基本要素 (1)算法中对数据的运算和操作 ? ??算法的控制结构关系运算、数据传输算术运算、逻辑运算、数据对象的运算和操作算法 (2)算法的控制结构:算法中各操作之间执行顺序称为算法的控制结构 描述算法的工具通常有传统流程图、N-S 结构化流程图、算法描述语言等 一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。 算法语言流程图传统流程图 算法循环选择顺序描述组成S -N ???←??→? 考点2 算法的复杂度 1.算法的时间复杂度(是指执行算法所需要的计算工作量) 2.算法的空间复杂度(是指执行这个算法所需要的内存空间) ?? ?????空间执行过程中需要的额外据的存储空间、算法程序空间、输入数 空间:内存空间问题的规模时间:工作量算法的复杂度 考点3 数据结构的定义 数据结构作为计算机的一门学科,主要研究和讨论以下的三个方面: (1)数据集合中个数据元素之间所固有的逻辑关系即数据的逻辑结构; (2)在对数据元素进行处理时,各数据元素在计算机的存储关系,即数据的存储结构; (3)对各种数据结构进行得运算。 数据:对客观事物的符号表示,计算机科学中式指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象:是性质相同的数据元素的集合,是数据的一个子集。 数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合的若干关系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,记为D ;二是D 上的关系,反映了数据元素之间的前后关系,通常记为R 。一个数据结构可以表示成B=(D,R ) 数据的逻辑结构在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑,在数据的存储结构中,不仅要存放各数据元素的信息,还要存放各数据元素之间的前后件关系的信息。

数据结构与算法分析 C++版答案

Data Structures and Algorithm 习题答案 Preface ii 1 Data Structures and Algorithms 1 2 Mathematical Preliminaries 5 3 Algorithm Analysis 17 4 Lists, Stacks, and Queues 23 5 Binary Trees 32 6 General Trees 40 7 Internal Sorting 46 8 File Processing and External Sorting 54 9Searching 58 10 Indexing 64 11 Graphs 69 12 Lists and Arrays Revisited 76 13 Advanced Tree Structures 82 i

ii Contents 14 Analysis Techniques 88 15 Limits to Computation 94

Preface Contained herein are the solutions to all exercises from the textbook A Practical Introduction to Data Structures and Algorithm Analysis, 2nd edition. For most of the problems requiring an algorithm I have given actual code. In a few cases I have presented pseudocode. Please be aware that the code presented in this manual has not actually been compiled and tested. While I believe the algorithms to be essentially correct, there may be errors in syntax as well as semantics. Most importantly, these solutions provide a guide to the instructor as to the intended answer, rather than usable programs.

数据结构与算法C语言版期末复习题

《数据结构与算法》期末复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。 A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i

(完整版)(考研复试)软件工程笔记

1:软件危机:问题1:如何开发软件,以满足对软件日益增长的需求。问题2:如何维护数量不断膨胀的软件。表现:对软件开发成本和时间估计不准,用户对已完成软件不满意,软件质量不可靠,软件不可维护,软件缺少文档,软件成本过高,软件跟不上硬件发展速度。原因:与软件本身特点有关,缺乏可见性,质量难以评价,规模庞大难以维护。与软件开发维护的不当方法有关,轻视需求分析和维护,对用户的要求没有完整准确的认识就编写程序,忽视程序,文档,数据等软件配置。 2:软件工程:采用工程的概念,原理,技术和方法开发与维护软件,把正确的管理技术和软件开发技术结合起来,经济的开发出高质量的软件并有效的维护。即把系统化的,规范的,可度量的途径应用于软件开发,运行和维护的过程。3:软件工程7条基本原理:用分阶段的生命周期计划严格管理,坚持进行阶段评审,实行严格的产品控制,采用现代程序设计技术,结果应能清楚地审查,开发小组的人员应该少而精,承认不断改进软件工程实践的必要性。 4:软件工程领域:软件需求,设计,构建(写代码),测试,维护,配置管理,工程管理,工程过程,工程工具,软件质量。 5:软件生命周期:软件定义(问题定义,可行性研究,需求分析),软件开发(概要设计,详细设计,编码和单元测

试,综合测试),运行维护(改正性维护,适应性维护,完善性维护,预防性维护)。、 生命周期模型 6:瀑布模型:就是把一个开发过程分成收集需求,分析,设计,编码,测试,维护六部分,只有完成前面一步才能开始后面一步,上一步的输出的文档就是这一步的输入文档,每一步完成都要交出合格的文档,每一步都会有反馈,如果反馈有错误就退回前一步解决问题。瀑布模型的缺点:实际的项目开发很难严格按该模型进行;由于用户只能通过文档来了解产品,客户往往很难清楚地给出所有的需求,而瀑布模型不适应用户需求的变化;软件的实际情况必须到项目开发的后期客户才能看到。 7:快速原型模型:就是根据用户的需求迅速设计出一个原型系统,原型系统具有基本的功能,然后用户使用原型并对原型提出需求和改变,开发人员再对原型进行修改和完善知道用户满意。优点:容易适应需求的变化;有利于开发与培训的同步;开发费用低、开发周期短且对用户更友好。缺点:快速建立起来的系统结构加上连续的修改可能会导致产品质量低下;使用这个模型的前提是要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。 8:增量模型:就是把软件分成许多个构件,每个构件分别当做一个软件来分析,设计,编码,测试。开发人员一次一

数据结构与算法试题

数据结构与算法试题 一、单选题 1、在数据结构的讨论中把数据结构从逻辑上分为 (C ) A 内部结构与外部结构 B 静态结构与动态结构 C 线性结构与非线性结构 D 紧凑结构与非紧凑结构。 2、采用线性链表表示一个向量时,要求占用的存储空间地址(D ) A 必须就是连续的 B 部分地址必须就是连续的 C 一定就是不连续的 D 可连续可不连续 3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。 A n B n/2 C (n-1)/2 D (n+1)/2 4、在一个单链表中,若q结点就是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。 A s→link = p→link;p→link = s; B p→link = s; s→link = q; C p→link = s→link;s→link = p; D q→link = s;s→link = p; 5、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。 A 起泡排序 B 堆排序 C 锦标赛排序 D 快速排序 6、设有两个串t与p,求p在t中首次出现的位置的运算叫做( B )。 A 求子串 B 模式匹配 C 串替换 D 串连接 7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放该数

组至少需要的存储字数就是( C )。 A 80 B 100 C 240 D 270 8、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。 A 栈 B 队列 C 循环队列 D 优先队列 9、一个队列的进队列顺序就是1, 2, 3, 4,则出队列顺序为( C )。 10、在循环队列中用数组A[0、、m-1] 存放队列元素,其队头与队尾指针分别为front与rear,则当前队列中的元素个数就是( D )。 A ( front - rear + 1) % m B ( rear - front + 1) % m C ( front - rear + m) % m D ( rear - front + m) % m 11、一个数组元素a[i]与( A )的表示等价。 A *(a+i) B a+i C *a+i D &a+i 12、若需要利用形参直接访问实参,则应把形参变量说明为( B )参数。 A 指针 B 引用 C 值 D 变量 13、下面程序段的时间复杂度为( C ) for (int i=0;i

Java工作笔记(必看经典)

JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律。 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。 方法的定义非常重要。方法有参数,也可能有返回值。 注意区分:对象(本身)、对象的实现者、对象的调用者。 分析对象主要从方法开始。 我们通过类来看待对象,类是对象的抽象。 其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。 对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。这样才能使每个对象本身做成最好的。 对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。 实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。 可复用性是OOP的基础。 比较面向过程的思想和面向对象的思想: 面向过程的思想:由过程、步骤、函数组成,以过程为核心; 面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。 面向过程是先有算法,后有数据结构。 面向对象是先有数据结构,然后再有算法。 在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。 开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。 从语法上来看,一个类是一个新的数据类型。 在面向对象编程中,除了简单数据类型,就是对象类型。 定义类的格式: class Student{ 代码 } 注意类名中单词的首字母大写。 实例变量:定义在类中但在任何方法之外。(New出来的均有初值) 局部变量:定义在方法之中的变量。

数据结构与算法分析

目录: 1、数据结构 2、算法的设计原则 3、总结 正文: 本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子。 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱。一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数据结构和算法的人也能编程。但是如果一个开车的人懂变速箱的原理,比如降低速度来获得更大的牵引力,或者通过降低牵引力来获得更快的行驶速度。那么爬坡时使用1档,便可以获得更大的牵引力;下坡时便使用低档限制车的行驶速度。回到编程而言,比如将一个班级的学生名字要临时存储在内存中,你会选择什么数据结构来存储,数组还是ArrayList,或者HashSet,或者别的数据结构。如果不懂数据结构的,可能随便选择一个容器来存储,也能完成所有的功能,但是后期如果随着学生数据量的增多,随便选择的数据结构肯定会存在性能问题,而一个懂数据结构和算法的人,在实际编程中会选择适当的数据结构来解决相应的问题,会极大的提高程序的性能。

1、数据结构 数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 一、数据结构的基本功能 ①、如何插入一条新的数据项 ②、如何寻找某一特定的数据项 ③、如何删除某一特定的数据项 ④、如何迭代的访问各个数据项,以便进行显示或其他操作 二、常用的数据结构 这几种结构优缺点如下:先有个大概印象,后面会详细讲解!!! 算法简单来说就是解决问题的步骤。 在Java中,算法通常都是由类的方法来实现的。前面的数据结构,比如链表为啥插入、删除快,而查找慢,平衡的二叉树插入、删除、查找都快,这都是实现这些数据结构的算法所造成的。后面我们讲的各种排序实现也是算法范畴的重要领域。

数据结构与算法试卷(B卷)

广西科技大学2015 —2016 学年第 1 学期课程考核试题试卷 考核课程数据结构与算法( B 卷)考核班级物联网141 学生数36 印数40 考核方式闭卷考核时间120 分钟 一、单项选择题(在每小题的四个备选答案中,选出一个正确答案。每小题1分,共33分) 1、算法是()。 A. 计算机程序 B. 解决问题的计算方法 C. 排序算法 D. 解决问题的有限运算序列 2、一个顺序表的第一个元素的存储地址是90,每个元素的长度为2,则第8个元素的存储地址是()。 A. 102 B. 104 C. 106 D. 108 3、在一个长度为n的顺序表中删除第i个元素,需要向前移动()个元素。 A. n-i B. n-i+1 C. n-i-1 D. i+1 4、在头指针为head且表长大于1的单循环链表中,指针p指向表中某个结点,若p->next->next==head,则()。 A. p指向头结点 B. p指向尾结点 C. p的直接后继是头结点 D. p的直接后继是尾结点 5、在以下的叙述中,正确的是()。 A. 线性表的顺序存储结构优于链表存储结构 B. 线性表的顺序存储结构适用于频繁插入/删除数据元素的情况 C. 线性表的链表存储结构适用于频繁插入/删除数据元素的情况 D. 线性表的链表存储结构优于顺序存储结构 6、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入一个结点s,则执行()。 A. s->next=p->next; p->next=s; B. p->next=s->next; s->next=p; C. q->next=s; s->next=p; D. p->next=s; s->next=q; 7、在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是()。 A. p->next=q; q->prior=p; p->next->prior=q; q->next=q; B. p->next=q; p->next->prior=q; q->prior=p; q->next=p->next; C. q->prior=p; q->next=p->next; p->next->prior=q; p->next=q; D. q->next=p->next; q->prior=p; p->next=q; p->next=q; 8、在单链表中,指针p指向元素为x的结点,实现删除x的后继的语句是()。 A. p=p->next; B. p->next=p->next->next; C. p->next=p; D.p=p->next->next; 9、在表长为n的顺序表中,当在任何位置删除一个元素的概率相同时,删除一个元素所需移动的平均个数为()。 A. (n-1)/2 B. n/2 C. (n+1)/2 D. n 10、将长度为n的单链表连接在长度为m的单链表之后的算法的时间复杂度为()。 A. O(1) B. O(n) C. O(m) D. O(m+n) 11、线性表的顺序存储结构是一种()存储结构。 A. 随机存取 B. 顺序存取 C. 索引存取 D. 散列存取 12、循环链表的主要优点是()。 A. 不再需要头指针 B. 已知某结点位置后能容易找到其直接前驱 C. 在进行插入、删除运算时能保证链表不断开 D. 在表中任一结点出发都能扫描整个链表 13、在下列对顺序表进行的操作中,算法时间复杂度为O(1)的是()。

常用的大数据结构与算法

常用的大数据结构与算法 在学习了解这些数据结构和算法之前,引用一位前辈的话: “我们不需要你能不参考任何资料,实现红黑树;我们需要的是你能在实践当中,选择恰当的数据结构完成程序开发;在必要的时候,能在已有的数据结构基础上进行适当改进,满足工程需要。但要做到这一点,你需要掌握基础的算法和数据结构,你需要理解并应用一些高级数据结构和算法的思想。因此,在程序员这条道路上,你要想走得更远,你需要活用各种数据结构,你需要吸收知名算法的一些思想,而不是死记硬背算法本身。” 那么,工程实践当中,最常用的算法和数据结构有哪些? 以下是Google工程师Arjun Nayini在Quora给出的答案,得到了绝大多数人的赞同。 最常用的算法 1.图搜索算法(BFS,DFS) 2.排序算法 3.通用的动态规划算法 4.匹配算法和网络流算法 5.正则表达式和字符串匹配算法 最常用的数据结构 1.图,尤其是树结构特别重要 2.Maps结构 3.Heap结构 4.Stacks/Queues结构 5.Tries树 其他一些相对比较常用的数据算法还有:贪心算法、Prim’s / Kruskal’s算法、Dijkstra’s 最短路径算法等等。 怎么样才能活用各种数据结构? 你能很清楚的知道什么时候用hash表,什么时候用堆或者红黑色?在什么应用场景下,能用红黑色来代替hash表么?要做到这些,你需要理解红黑树、堆、hash表各有什么特性,彼此优缺点等,否则你不可能知道什么时候该用什么数据结构。 常言道: 程序=算法+数据结构 程序≈数据结构 小编希望这些算法的掌握能够帮助大家拓宽握数据结构和算法的视野,提高算法设计和动手编程的能力。

数据结构处算法分析――读书笔记

数据结构处算法分析――读书笔记 第一章 前言 1.1 所选教材 我所选择的教材是《数据结构与算法分析——C语言描述》(原书第2版),英文版的名称是《Data Structures and Algorithm Analysis in C》,作者是:(美)Mark Allen Weiss。原书曾被评为20世纪顶尖的30部计算机著作之一。之所以选这本书,还因为它的简体中文版翻译得相当不错,几乎没有给我的阅读带来什么障碍。^_^ 这本教科书所使用的是C语言,也许很多人会说C语言已经过时了,但是,我认为在数据结构的学习中,应该用尽量简单的语言,以免进入了语言的细枝末节中,反而冲淡了主题。实际上在国外的许多大学中(甚至中学),数据结构和算法分析的课程是选用Scheme的,例如MIT麻省理工大学极其著名的SICP课程。呵呵,语言又能说明什么呢? 1.2 写作原因 数据结构与算法分析是计算机专业的必修课——但遗憾的是,我在大学阶段并不是计算机专业的学生,以至于没有系统地跟着老师学习过这门课程。现在我已经工作了,在实际的工作中,我经常感到自己的基础知识不够,有很多问题无法解决。在经历了一段痛苦的斗争后,我选择了自学的道路,想把这门课程扎扎实实地学好。 教科书中已经给出了大部分的代码,因此,我基本上也只是重复敲入了一次而已(或者是改写成C++),但这并不是没有意义的。我们在看书的时候经常会觉得自己已经懂了,但如果真的要亲自动手去做了,却会感到无法下手。我认为,亲自输入一次代码并调试通过,比任何空谈都有效。 在具体的代码实现上,我可能会参考MFC、STL……但也可能会进行一定的修改。 1.3 一些约定 我使用的是Visual C++ 6.0编译器,并将会用C/C++来撰写代码(我可能会用C++改写原书中的例子,以便能用在工作中,但一些地方还是会用C),不会使用任何与平台相关的特性(因此可以保证有比较好的移植性)。原书中的代码风格跟我平时的代码风格非常相近,但有一些地方我可能会进行一些改动。 我认为数据结构的代码不需要任何界面,因此,请您新建一个工程,类型为Win32 Console Application,即控制台工程。然后添加一个.h头文件和一个.c/.cpp文件。头文件中,我一般会写3行固定格式的预编译语句,如下: #ifndef __LIST_H__ #define __LIST_H__ // TODO: Add header body code here #endif // __LIST_H__ 表示这是一个list.h。 另外,C++操作符new的实现在不同的编译器中都不太一样,在VC6中,如果new失败,则会返回NULL,程序中我用检测返回值是否为NULL来判断new是否成功,但如果这个代码是用别的编译器编译的,则要特别注意别的编译器是否也是用NULL来表示new失败的,否则很可能会导致无法意料的结果。 为了方便调试内存泄漏,我会在一些地方写入这样的代码: #include

数据结构与算法模拟试卷五

《数据结构与算法》模拟试卷五 一、名词解释(5*3=15分) 数据结构完全二叉数 AOE网队列拓扑排序 二、填空题(1*16=16分) 1.在一个长度为n的循环链表中,删除其元素值为x的结点的时间复杂度为 ______。 2.已知指针p指向某单链表中的一个结点,则判别该结点有且仅有一个后继结点 的条件是______。 3.如果入栈序列是1,3,5,…,97,99,且出栈序列的第一个元素为99,则出 栈序列中第30个元素为______。 4.一种抽象数据类型包括______和______两个部分。 5.线性表的链式存储方式中,每个结点包括两个域,分别是______和______ 。 6.在以HL为表头指针的带表头附加结点的单链表和循环单链表中,判断链表为 空的条件分别为单链表中______ 和 ______ 。 7.在一棵二叉树中,度为0的结点的个数是10,则度为2的结点个数是_________ 8.一个有n个结点的二叉树的深度最大为___________,最小为__________ 9.n个定点的连通图至少有_______条边。 10.二分查找的存储结构仅限于________,且是__________ 11.在对一组记录(54,38,96,72,60,15,60,45,83)进行直接插入排序时, 当把第6个记录60插入到有序表时,为寻找插入位置需比较________次。 三、选择题(1*10=10分) 1.在一个不带头结点的单链表HL中,若要向表头插入一个由指针p指向的结点, 则执行 _______。 A、HL=p; p->next=HL; B、p->next=HL; HL=p; C、p->next=HL; p=HL; D、p->next=HL->next; HL->nxet=p; 2.在一个长度为n的顺序存储的线性表中,删除第i个元素(1≤i≤n+1)时, 需要从前向后依次移动_______个元素。 A、n-i B、n-i+1 C、n-i-1 D、i 3.在一个顺序队列中,队首指针指向队首元素的_______位置。 A、当前 B、后一个 C、前一个 D、后面 4.计算递归函数如不用递归过程通常借助的数据结构是____。 A、线性表 B、双向队列 C、树 D、栈 5.如果T2是由有序树T转换来的二叉树,则T中结点的后序排列是T2结点的 ____。 A、先序排列 B、中序排列 C、后序排列 D、层序排列 6.栈的插入和删除操作在_____进行。

数据结构与算法

[试题分类]:数据结构与算法 1.数据结构可形式地定义为(D, S),其中S是D上( )的有限集。 A.操作 B.存储映像 C.关系 D.数据元素 答案:C 题型:单选题 知识点:1.2 基本概念和术语 难度:1 2.一般而言,最适合描述算法的语言是( )。 A.自然语言 B.计算机程序语言 C.介于自然语言和程序设计语言之间的伪语言 D.数学公式 答案:C 题型:单选题 知识点:1.4 算法和算法分析 难度:1 3.在下列序列中,不是线性表的是( )。 A. (‘a’,‘b’) B. (a, b) C. (‘AB’,‘CD’) D. (‘a’, b) 答案:D

题型:单选题 知识点:2.1 线性表的类型定义 难度:2 4.对于顺序表的优缺点,以下说法错误的是( )。 A.插入和删除操作较方便 B.可以方便地随机存取表中的任一结点 C.无需为表示结点间的逻辑关系而增加额外的存储空间 D.由于顺序表要求占用连续的空间,存储分配只能预先进行 题型:单选题 知识点:2.2线性表的顺序表示和实现 难度:2 5.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行( )。 A. s->next=p->next;p->next=s; B. p->next=s->next;s->next=p; C. q->next=s;s->next=p; D. p->next=s;s->next=q; 题型:单选题 知识点:2.3线性表的链式表示和实现 难度:2 6.若某链表中最常用的操作是在最后一个结点后插入一个结点和删除最后一个结点,则采用( )存储方式最节省时间。 A.单链表 B.带头结点的单链表 C.单循环链表

相关主题
文本预览
相关文档 最新文档