实用数据结构基础(第四版)课后习题知识讲解
李春葆《数据结构教程》(第4版)笔记和课后习题详解(第11~13章)【圣才出品】

李春葆《数据结构教程》(第4版)笔记和课后习题详解第11章外排序11.1复习笔记一、外排序概述文件存储在外存上,因此外排序方法与各种外存设备的特征有关。
外排序的基本方法是归并排序法。
它分为以下两个步骤:1.生成若干初始归并段(顺串)将一个文件(含待排序的数据)中的数据分段读入内存,在内存中对其进行内排序,并将经过排序的数据段(有序段)写到多个外存文件上。
2.多路归并对这些初始归并段进行多遍归并,使得有序的归并段逐渐扩大,最后在外存上形成整个文件的单一归并段,也就完成了这个文件的外排序。
二、磁盘排序1.磁盘排序概述磁盘是直接存取设备,读/写一个数据块的时间与当前读/写头所处的位置关系不大,存放在磁盘中的文件的排序属典型的外排序。
磁盘排序过程如图11-1所示.图11-1磁盘排序过程磁盘中的F in文件包括待排序的数据,通过相关算法将F in文件中数据一部分一部分地调入内存(每个记录被读一次)处理,产生若干个文件F1~F n(每个记录被写一次),它们都是有序的,称为顺串。
然后再次将F1~F n文件中的记录调入内存(每个记录被读一次),通过相关归并算法产生一个有序的F out文件(每个记录被写一次),从而达到数据排序的目的。
可见,提高排序速度很重要的一个方面是减少对数据的扫描遍数。
2.生成初始归并段使用置换—选择的排序算法用于生成较长的初始归并段。
采用置换—选择排序算法生成初始归并段时,内排序基于选择排序,即从若干个记录中通过关键字比较选择一个最小的记录,同时在此过程中进行记录的输入和输出,最后生成若干个长度可能各不相同的有序文件。
基本步骤如下:(1)从待排序文件F in中按内存工作区WA的容量(设为w)读入w个记录,设归并段编号i=1;(2)从WA中选出关键字最小的记录R min;(3)将R min 记录输出到文件F i 中,作为当前归并段的一个成员;(4)若F in 不空,则从F in 中读入下一个记录到WA 中替代刚输出的记录;(5)从WA 工作区中所有大于或等于R min 的记录中选择出最小记录作为新的R min ,转(3),直到选不出这样的R min ;(6)置i=i+1,开始一个新的归并段;(7)若WA 工作区已空,则初始归并段已全部产生,否则转(2)。
实用数据结构基础参考答案

实用数据结构基础参考答案单元练习1一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳ )(√)(1)数据的逻辑结构与数据元素本身的内容与形式无关。
(√)(2)一个数据结构就是由一个逻辑结构与这个逻辑结构上的一个基本运算集构成的整体。
(ㄨ)(3)数据元素就是数据的最小单位。
(ㄨ)(4)数据的逻辑结构与数据的存储结构就是相同的。
(ㄨ)(5)程序与算法原则上没有区别,所以在讨论数据结构时可以通用。
(√)(6)从逻辑关系上讲,数据结构主要分为线性结构与非线性结构两类。
(√)(7)数据的存储结构就是数据的逻辑结构的存储映像。
(√)(8)数据的物理结构就是指数据在计算机内实际的存储形式。
(ㄨ)(9)数据的逻辑结构就是依赖于计算机的。
(√)(10)算法就是对解题方法与步骤的描述。
二.填空题(1)数据有逻辑结构与存储结构两种结构。
(2)数据逻辑结构除了集合以外,还包括:线性结构、树形结构与图形结构。
(3)数据结构按逻辑结构可分为两大类,它们就是线性结构与非线性结构。
(4)树形结构与图形结构合称为非线性结构。
(5)在树形结构中,除了树根结点以外,其余每个结点只有1 个前趋结点。
(6)在图形结构中,每个结点的前趋结点数与后续结点数可以任意多个。
(7)数据的存储结构又叫物理结构。
(8)数据的存储结构形式包括:顺序存储、链式存储、索引存储与散列存储。
(9)线性结构中的元素之间存在一对一的关系。
(10)树形结构结构中的元素之间存在一对多的关系,(11)图形结构的元素之间存在多对多的关系。
(12)数据结构主要研究数据的逻辑结构、存储结构与算法(或运算) 三个方面的内容。
(13)数据结构被定义为(D,R),其中D就是数据的有限集合,R就是D上的关系的有限集合。
(14)算法就是一个有穷指令的集合。
(15)算法效率的度量可以分为事先估算法与事后统计法。
(16)一个算法的时间复杂性就是算法输入规模的函数。
(17)算法的空间复杂度就是指该算法所耗费的存储空间 ,它就是该算法求解问题规模n的函数。
李春葆《数据结构教程》(第4版)课后习题-串(圣才出品)

第4章串1.采用顺序结构存储串,编写一个实现串通配符匹配的算法pattern______index(),其中的通配符只有“?”,它可以和任一字符匹配成功,例如,pattern______index(″? re″,″there are″)返回的结果是2。
答:本题的基础是Brute—Force模式匹配算法,只是增加了“?”的处理功能。
对应的算法如下:2.有两个串s1和s2,设计一个算法求这样一个串,该串中的字符是s1和s2中的公共字符。
答:扫描s1,对于当前字符s1.data[i],若在s2中,则将其加入到串s3中。
最后返回s3串。
对应的算法如下:3.设目标为t=’abcaabbabcabaacbacba’,模式p=’abcabaa’。
(1)计算模式P的nextval函数值。
(2)不写算法,只画出利用KMP算法进行模式匹配时的每一趟匹配过程。
答:(1)先计算next数组,在此基础上求nextval数组,如表4-1所示。
表4-1 计算next数组和nextval数组(2)采用KMP算法求子串位置的过程如下(开始时i=0,j=0):第1趟匹配:此时i=4,j=4,匹配失败,而nextval[4]=0,则i=4,j=nextval[4]=0,即:第2趟匹配:此时i=6,j=2,匹配失败,而nextval[2]=0,则i=6,j=nextval[2]=0,即:第3趟匹配:此时i=6,j=0,匹配失败,而nextval[0]=-1,则i=6,j=nextval[0]=-1。
因j=-1,执行i=i+1=7,j=j+1=0,即:第4趟匹配:此时i=14,j=7,匹配成功,返回v=i-t.1ength=14-7=7。
上机实验题4实验题1编写一个程序algo4-1.cpp,实现顺序串的各种基本运算,并在此基础上设计一个程序exp4-1.cpp完成如下功能:(1)建立串s=″abcdefghefghijklmn″和串sl=″xyz″;(2)输出串s;(3)输出串s的长度;(4)在串s的第9个字符位置插入串s1而产生串s2;(5)输出串s2;(6)删除串s第2个字符开始的5个字符而产生串s2;(7)输出串s2;(8)将串s第2个字符开始的5个字符替换成串s1而产生串s2;(9)输出串s2;(10)提取串s的第2个字符开始的10个字符而产生串s3;(11)输出串s3;(12)将串s1和串s2连接起来而产生串s4;(13)输出串s4。
数据结构课后习题详解(超完整,超经典)

第1章 绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。
解:数据是对客观事物的符号表示。
在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
存储结构是数据结构在计算机中的表示。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。
是对一般数据类型的扩展。
1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。
解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。
一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。
抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。
在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。
1.3 设有数据结构(D,R),其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =试按图论中图的画法惯例画出其逻辑结构图。
解:1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。
解:ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={<r,i>} 基本操作: InitComplex(&C,re,im)操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C)操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值 Put(&C,k,e) 操作结果:改变复数C 的第k 元的值为eIsAscending(C)操作结果:如果复数C 的两个元素按升序排列,则返回1,否则返回0IsDescending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0 Max(C,&e)操作结果:用e返回复数C的两个元素中值较大的一个Min(C,&e)操作结果:用e返回复数C的两个元素中值较小的一个}ADT ComplexADT RationalNumber{数据对象:D={s,m|s,m为自然数,且m不为0}数据关系:R={<s,m>}基本操作:InitRationalNumber(&R,s,m)操作结果:构造一个有理数R,其分子和分母分别为s和mDestroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值Put(&R,k,e)操作结果:改变有理数R的第k元的值为eIsAscending(R)操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0 IsDescending(R)操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0 Max(R,&e)操作结果:用e返回有理数R的两个元素中值较大的一个Min(R,&e)操作结果:用e返回有理数R的两个元素中值较小的一个}ADT RationalNumber1.5 试画出与下列程序段等价的框图。
(完整word版)数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)

数据结构基础及深入及考试复习资料习题及实验参考答案见附录结论1、数据的逻辑结构是指数据元素之间的逻辑关系.即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。
它依赖于计算机。
存储结构可分为4大类:顺序、链式、索引、散列3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。
它由基本的数据类型构成,并包括一组相关的服务(或称操作)。
它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机).4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。
5、在数据结构中,从逻辑上可以把数据结构分成( C )A、动态结构和表态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6、算法的时间复杂度取决于( A )A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态线性表1、线性表的存储结构包括顺序存储结构和链式存储结构两种.2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为( E ),删除一个元素需要移动的元素的个数为( A )。
A、(n—1)/2B、nC、n+1D、n-1E、n/2F、(n+1)/2G、(n-2)/23、“线性表的逻辑顺序与存储顺序总是一致的."这个结论是( B )A、正确的B、错误的C、不一定,与具体的结构有关4、线性表采用链式存储结构时,要求内存中可用存储单元的地址( D )A、必须是连续的B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以5、带头结点的单链表为空的判定条件是( B )A、head==NULLB、head—>next==NULLC、head->next=headD、head!=NULL6、不带头结点的单链表head为空的判定条件是( A )A、head==NULLB、head-〉next==NULLC、head—>next=headD、head!=NULL7、非空的循环单链表head的尾结点P满足( C )A、p—>next==NULLB、p==NULLC、p->next==headD、p==head8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是( B )A、O(1)B、O(n)C、O(n2)D、O(nlog2n)9、在一个单链表中,若删除p所指结点的后继结点,则执行( A )A、p-〉next=p—〉next—>next;B、p=p—〉next;p-〉next=p—>next-〉next;C、p—〉next=p-〉next;D、p= p—>next->next;10、在一个单链表中,若在p所指结点之后插入s所指结点,则执行( B )A、s—>next=p;p-〉next=s;B、s—〉next=p—>next;p-〉next=s;C、s->next=p—〉next;p=s;D、p->next=s;s->next=p;11、在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点s,则执行( C )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;12、在线性结构中,第一个结点没有前趋结点,其余每个结点有且只有 1 个前趋结点。
数据结构使用C语言(第4版).PPT课件

-
16
例1-3 设数组a和b在前边部分已赋值,求如下两个n阶矩 阵相乘运算算法的时间复杂度。
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ c[i][j]=0;
//基本语句1
for(k=0;k<n;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j]; //基本语句2
-
4
线性结构:除第一个和最后一个数据元素外,每个
数
数据元素只有一个前驱和一个后继数据元素。
据
的
树结构:除根结点外,每个数据元素只有一个前驱
逻
数据元素,可有0个或若干个后继数据元素。
辑
结
构
图结构:每个数据元素可有0个或若干个前驱数据
元素和0个或若干个后继数据元素。
-
5
线性结构
树结构
-
图结构
6
顺序存储结构:把数据元素存储在一块连续地址空
void BubbleSort(int a[],int n)
{ int i,j,flag=1; int temp;
for(i=1;i<n&&flag==1;i++)
{ flag=0;
for(j=0;j<n-i;j++)
{ if(a[j]>a[j+1])
{ flag=1; temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;
数据间的逻辑关系表现在结点的链接关系上。
-
李春葆《数据结构教程》(第4版)课后习题-绪论(圣才出品)

第二部分课后习题第1章绪论1.简述数据与数据元素的关系与区别。
答:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。
数据元素是数据的基本单位,是数据的个体。
数据与元素之间的关系是元素与集合之间的关系。
2.数据结构和数据类型有什么区别?答:数据结构是互相之间存在一种或多种特定关系的数据元素的集合,一般包括三个方面的内容,即数据的逻辑结构、存储结构和数据的运算。
而数据类型是一个值的集合和定义在这个集合上的一组运算的总称,如C语言中的int数据类型是由-32768~32767(16位机)的整数和+、-、*、/、%等运算符组成。
3.设3个表示算法频度的函数f、g和h分别为:f(n)=100n3+n2+1000g(n)=25n3+5000n2h(n)=n1.5+5000nlog2n求它们对应的时间复杂度。
答:f(n)=100n3+n2+1000=O(n3),g(n)=25n3+5000n2=O(n3),当n→∞时,√n>log2n,所以h(n)=n1.5+5000nlog2n= O(n1.5)。
4.用C/C++语言描述下列算法,并给出算法的时间复杂度。
(1)求一个n阶方阵的所有元素之和。
(2)对于输入的任意三个整数,将它们按从小到大的顺序输出。
(3)对于输入的任意n个整数,输出其中的最大和最小元素。
答:(1)算法如下:本算法的时间复杂度为O(n2)。
(2)算法如下:本算法的时间复杂度为O(1)。
(3)算法如下:本算法的时间复杂度为O(n)。
5.设n为正整数,给出下列各种算法关于n的时间复杂度。
(1)(2)(3)答:(1)设while循环语句执行次数为T(n),则:(2)算法中的基本运算语句是if(b[k]>b[j])k=j,其执行次数T(n)为:(3)设while循环语句执行次数为T(n),则:则6.有以下递归算法用于对数组a[i..j]的元素进行归并排序:求mergesort(a,0,n-1)的时间复杂度。
李春葆《数据结构教程》(第4版)笔记和课后习题详解(内排序)【圣才出品】

第10章内排序10.1 复习笔记一、排序的基本概念1.定义排序,就是整理表中的元素,使之按关键字递增或递减的顺序排列,本章仅讨论递增排序的情况。
其确切定义如下:输入:n个元素,R0,R1,…,R n-1,相应的关键字分别为k0,k1,…,k n-1。
输出:R i0,R i1,…,R in-1,使得k i0≤k i1≤…≤k in-1。
因此,排序算法就是要确定0,1,…,n-1的一种排列i0,i1,…,i n-1,使表中的元素依此排列整理后按关键字有序。
2.排序的稳定性(1)稳定如果待排序的表中,存在多个关键字相同的元素,经过排序后这些具有相同关键字的元素之间的相对次序保持不变,则称这种排序方法是稳定的。
(2)不稳定若具有相同关键字的元素之间的相对次序发生变化,则称这种排序方法是不稳定的。
注意:排序算法的稳定性是针对所有输入实例而言的。
在所有可能的输入实例中,只要有一个实例使得算法不满足稳定性要求,则该排序算法就是不稳定的。
3.内排序和外排序(1)内排序在排序过程中,若整个表都是放在内存中处理,排序时不涉及内、外存数据的交换,则称之为内排序。
内排序适用于元素个数不很多的小表。
(2)外排序若排序过程中要进行内、外存数据的交换,则称之为外排序。
外排序则适用于元素个数很多,不能一次将全部元素放入内存的大表。
内排序是外排序的基础。
(3)排序方法的其他分类①需要关键字比较的排序需要关键字比较的排序方法有插入排序、选择排序、交换排序和归并排序等。
②不需关键字比较的排序不需要关键字比较的排序方法有基数排序。
4.排序数据的组织在本章中,以顺序表作为排序数据的存储结构,假设关键字类型为整型。
待排序的顺序表中数据元素的类型定义如下:二、插入排序1.插入排序的思想及方法基本思想是:每次将一个待排序的元素,按其关键字大小插入到已经排好序的子表中的适当位置,直到全部元素插入完成为止。
主要有两种插入排序方法,即直接插入排序和希尔排序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、判断题(第一章绪论)1.数据元素是数据的最小单元。
答案:错误2.一个数据结构是由一个逻辑结构和这个逻辑结构上的基本运算集构成的整体。
答案:错误3.数据的存储结构是数据元素之间的逻辑关系和逻辑结构在计算机存储器内的映像。
答案:正确4.数据的逻辑结构是描述元素之间的逻辑关系,它是依赖于计算机的。
答案:错误5.用语句频度来表示算法的时间复杂度的最大好处是可以独立于计算机的软硬件,分析算法的时间答案:正确(第二章线性表)6.取顺序存储线性表的第i个元素的时间同i的大小有关。
答案:错误7.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。
答案:正确8.线性链表的每一个节点都恰好包含一个指针域。
答案:错误9.顺序存储方式的优点的存储密度大,插入和删除效率不如练市存储方式好。
答案:正确10.插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。
答案:错误(第三章栈)11.栈是一种对进栈和出栈作了限制的线性表。
答案:错误12.在C(或C++)语言中设顺序栈的长度为MAXLEN,则top=MAXLEN表示栈满。
答案:错误13.链栈与顺序栈相比,其特点之一是通常不会出现满栈的情况。
答案:正确14.空栈就是所有元素都为0上的栈。
答案:错误15.将十进制数转换为二进制数是栈的典型应用之一。
答案:正确(第四章队列)16.队列式限制在两端进行操作的线性表。
答案:正确17.判断顺序队列为空的标准是头指针和尾指针都指向同一结点。
答案:错误18.在循环链列队中无溢出现像。
答案:错误19.在循环队列中,若尾指针rear大于头指针front,则元素个数为rear-front。
答案:正确20.顺序队列和循环队列关于队满和队空的判断条件是一样的。
答案:错误(第五章串)21.串是n个字母的有限序列。
答案:错误22.串的堆分配存储是一种动态存储结构。
答案:正确23.串的长度是指串中不同字符的个数。
答案:错误24.如贵一个串中所有的字母均在另一个串中出现,则说明前者是后者的子串。
答案:错误25.在链串中为了提高存储密度,应该增大结点的大小。
答案:正确(第六章对维数组和广义表)26.n维的多维数组可以视为n-1维数组元素组成的线性结构。
答案:正确27.上三角矩阵对主角线以上(不包括对主角线中的元素),均为常数C。
答案:错误28.数组的三元组表存储时对稀疏矩阵的压缩存储。
答案:正确29.广义表Ls=(a0,a1,......an-1),则an-1是其表尾。
答案:错误30.广义表((a,b),a,b)的表头和表尾是相等的。
答案:错误(第七章树和二叉树)31.在完全二叉树中,若一个结点没有左孩子,则它必然是叶子节点。
答案:正确32.含多于两棵树的森林转换到二叉树,其根节点一定无右子树。
答案:错误33.二叉树的前序遍历中,任意一个节点均处于其子女节点的前面。
答案:正确34.在中序线索二叉树中,右线索若不为空,则一定指向其双亲。
答案:错误35.在哈夫曼编码中,当两个字符出现的频率相同的,其他编码也相同,对于这种情况应该做特殊处理。
答案:错误(第八章图)36.在无相图中,(v1,v2)与(v2,v1)是两条不同的边。
答案:错误37.图可以没有边,但不能没有顶点。
答案:正确38.若一个无向图以顶点v1为起点,进行深度优先遍历,所得的遍历序列唯一,则可以唯一确定该图。
答案:错误39.用邻接矩阵法存储一个图时,所占用的存储空间大小与图中的顶点个数无关,而只与图的边数有关。
答案:错误40.存储无向图的邻接矩阵是对称的,因此只要存储邻接矩阵的上三角(或下三角)部分就可以了。
答案:正确(第九章查找)41.在有序的顺序表和有序的链表上,均可以采用二分查找法来提高查找速度。
答案:错误42.在二叉排序树中,根节点的这都小于孩子节点的值。
答案:错误43.选择好的哈希函数就可以避免冲突的发生。
答案:错误44.散列存储法的基本思想是由关键字的值决定数据存储地址。
答案:正确45.在二叉排序树上删除一个节点时,不必移动其他节点,只要将该节点的父节点的相应指针域置空即可。
答案:错误(第十章排序)46.如果某种排序算法不稳定,则该排序方法就没有使用价值。
答案:错误47.希尔排序是不稳定的排序。
答案:正确48.对排序所需的时间与待排序的记录个数无关。
答案:错误49.快速排序在任何情况下都比其他排序方法速度快。
答案:错误50.采用归并排序可以实现外排序。
答案:错误二、填空题(第一章绪论)1.数据结果是一门研究非数值计算的程序设计问题中计算机的___数据元素___,以及它们之间关系和运算的学科。
2.数据有逻辑结构和__存储结构__两种结构。
3.数据逻辑结构除了集合以外的还包括线性结构,树形结构和__图形结构__。
4.数据结构按逻辑结构可分为两大类,分别是线性结构和__非线性结构__。
5.图形结构和__树形结构__合称为非线性结构。
6.在树形结构中,除了树根节点以外,其余每个节点都只有__1__个前驱结点。
7.在图形结构中,每一个节点的前驱节点上数和后继节点数可以__互换__。
8.数据的存储结构,又叫做数据的__物理结构__。
9.数据的存储结构形式,包括顺序存储,链式存储索引存储和__散列存储__。
10.树形结构中的元素之间存在__1对多__的关系。
11.图形结构的元素之间存在__多对多__的关系。
12.数据结构主要研究数据的逻辑结构,存储结构和__算法__三方面的内容。
13.数据结构被定义为(D,R),D是数据的有限集合,R是D上的__逻辑关系__的有限集合14.算法是对特定问题__解决步骤__的描述。
15.算法效率的度量可以分为事先估算和__事后统计__。
16.一个算法的时间复杂度是算法__数据规模__的函数。
17.算法的空间复杂度是指该算法所耗费的__存储空间__,他是该算法求解问题规模n的函数。
18.若一个算法中,还有10万条基本语句,但有问题的规模无关,则该算法的时间复杂度为__O(1)__。
19.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为__O(n)__。
20.若一个算法中的语句频度之和为T(n)=3n+nlog2n+n2,则算法的时间复杂度为__O(n^2)__。
(第二章线性表)1.在线性表中,数据的长度定义为__表长__。
2.顺序表中逻辑上相邻的元素在物理位置上__一定__相邻。
3.顺序表相对于链表的优点是__密度大__和随机存取。
4.某线性表采用顺序存储结构,每个元素占据4个存储单元,首地址为100则下标为11的(第12个元素)存储地址为__144__。
5.当线性表中的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取现象表中的元素时,应采用__顺序__存储结构。
6.顺序表中访问任意一个结点的时间复杂度均为__O(1)__。
7.在一个长度为n的顺序表中删除第i个元素要移动__n-i__个元素。
8.在一个长度为n的顺序表中,如果要在第二个元素前插入一个元素要后移__n-i+1__个元素。
9.线性表L=(a1,a2,......,an)用数组表示假定删除表中任意元素的概率相同,则删除一个元素平均需要移动元素的个数是__n/2__。
10.在线性表的链式存储中元素之间的逻辑关系是通过__指针__决定的。
11.在双向链表中每个节点都有两个指针域他们一个指向其__前驱__结点,另一个指向其后继结点。
12.线性表的元素总数不确定,且经常需要进行插入和删除操作,应采用__链式__存储结构。
13.在单向链表中,需要知道__表头指针__才能遍历整个链表。
14.在单向链表中,要在已知的节点*p之前插入一个新节点,需找到*p的直接前驱结点的地址,其查找的时间复杂度为__O(n)__。
15.单向循环链表的最大优点是__从任意节点出发__可以访问到链表中每一个元素。
16.在双向链表中要删除已知节点*p,其实间复杂度为__O(n)__。
17.带头节点的双循环链表L中判断只有一个元素节点的条件是__L->next->next==L(L->front->front==L)__。
18.对于双向链表,在两个节点之间插入一个新节点需要修改的指针共__4__个。
19.双向链表中,设p是指向其中待删除的节点,则需要执行的操作命令序列为:p->front->rear=p->rear;__p->rear->front=p->front__。
20.在如下所示的链表中,若在指针p所在的结点之后插入数据与值为a和b的两个节点,则可用语句__S->next->next=p->next__来实现该操作。
(第三章栈)1.栈的特点是__先进后出__。
2.在栈结构中,允许插入,删除的一端称为__栈顶__。
3.在顺序栈中,在栈顶指针top=-1时表示__栈为空__。
4.顺序栈s存储在数组s->data[0..maxlen-1]中,进栈操作时首先需要执行的语句有:s->top=__s->top+1__。
5.链栈LS为空的条件是__LS==NULL__。
6.已知顺序栈s在对s进行栈操作之前,首先要判断__栈满否__。
7.若内存空间充足,__链__栈可以不定义栈满运算。
8.同一栈的各元素类型__一致__。
9.在有n个元素的链栈中,进栈操作的时间复杂度为__O(1)__。
10.由于链栈的操作只在链表的头部进行,所以没有必要设置__头__节点。
11.从一个栈删除元素时,首先取出__栈顶元素__,然后在移动栈顶指针。
12.像一个栈顶指针为top的链栈插入一个新的节点*p时,应执行__p->next=top__和top=p 的操作。
13.若进栈的次序是A、B、C、D、E执行三次出栈操作后栈顶元素为__B__。
14.四个元素按A、B、C、D顺序进s栈执行两次pop(S、X)后X的值是__C__。
15.设有一个顺序空栈,现有输入序列号ABCDE,经过push、push、pop、push、pop、push、push、pop操作之后输出序列式是__BCE__。
16.对一个初始值为空栈s执行操作push(s,5)、push(s,2)、push(s,4)、push(s,x)、readTop(s,x)后,x的值应是__2__。
17.设I表示入栈操作,O表示出栈操作,若元素入栈顺序为1,2,3,4为了得到1,3,4,2出栈顺序,则相应的I和O的操作串为__IOIIOIOO__。
18.已知表达式,求它后缀表达式是__栈__的典型应用。
19.A+B/C-D*E的后缀表达式是__ABC/+DE*-__。
20.已知一个栈的进栈序列是1,2,3,4,,......,n,其输出序列是p1,p2,p3,......,pn。