实用数据结构基础第四版课后习题
(完整版)数据结构课后习题答案(可编辑修改word版)
第1 章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={0,±1,±2,… },字母字符数据对象是集合C={‘A’,‘B’,… ,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
答案:例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。
每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。
数据库技术基础第四版课后习题答案
一.填空题1. 与文件管理系统相比较,数据库系统的特点主要有数据____________ 、数据___________ .数据____________ O结构化;共享性髙.冗余度低、易扩充:独立性髙2. 数据库系统提供了两个方面的映象功能,苴中,________ 使得数据库系统具有逻辑独立性,_____________ 使得数据库系统具有物理独立性。
外模式/模式映象;模式/内模式映像3. 数据库设计分为以下六个设计阶段:需求分析阶段,________________________ ,数拯库逻借设计阶段,___________________ ,数据库实施阶段,数据库运行和维护阶段。
概念结构设计阶段;数据库物理设计阶段4. 在数据库系统中最重要的软件是_______________ ,最重要的用户是 ___________________ .・数据库管理系统:数据库管理员。
二.选择题1. 目前数据库中最流行的数据库是(B )oA网状数据库B关系数据库C层次数据库D非关系模型数据库2. 元数据又可以叫做(B )oA用户数据B系统数据3. 描述数据库中全体数据的逻辑结构和特征的是(B ).A内模式B模式C外模式D存储模式4. DB的含义是(A)oA数据库B数据库管理系统C数据处理D数据库系统三.简答1. 试述数据库.数据库管理系统、数据库系统的概念。
解:数据库:数据库用于存储数据,数据分为用戸数据和系统数据。
数据库管理系统:数据库管理系统是一类重要的复杂的系统软件,由若干程序组成,主要包括数据库引擎,各种管理程序,开发工具等。
数据库管理系统完成对数据库的一切操作,同时提供而向应用的接口,供应用程序调用。
数据库系统:数据库系统由三部分组成:数据库、数据库管理系统,数据库应用2. 数据库系统的体系结构有哪几种,简述各自的特点。
解:目前数据库系统主要分为集中式、客户机/服务器、并行式和分布式等几种。
集中式数据库系统:DBMS.数据库和应用程序都在一台计算机上。
数据结构课后习题答案
数据结构课后习题答案第1章绪论一、基础知识题1.1 简述下列概念数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。
【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。
数据元素是数据的基本单位。
在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。
数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。
每一种计算机程序设计语言都定义有自己的数据类型。
“数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。
作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。
而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。
数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。
数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。
数据结构在计算机中的表示称为物理结构,又称存储结构。
是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。
逻辑结构与计算机无关。
算法是对特定问题求解步骤的一种描述,是指令的有限序列。
其中每一条指令表示一个或多个操作。
一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。
1.2数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面?【解答】数据的逻辑结构分为线性结构和非线性结构。
(也可以分为集合、线性结构、树形结构和图形即网状结构)。
逻辑结构是数据组织的某种“本质性”的东西:(1)逻辑结构与数据元素本身的形式、内容无关。
(2)逻辑结构与数据元素的相对位置无关。
(3)逻辑结构与所含数据元素的个数无关。
(完整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 个前趋结点。
数据结构教材课后习题及参考答案习题 (12)[4页]
1.习题7一.选择题1.在一个图中,所有顶点的度数之和等于所有边数的()倍。
A.1/2 B.1 C.2 D.42.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()倍。
A.1/2 B.1 C.2 D.43.一个有n 个顶点的无向图最多有()条边。
A.n B.n(n-1) C.n(n-1)/2 D.2n4.有8个结点的无向图最多有()条边。
A.14 B.28 C.56 D.1125.具有8个顶点的无向图至少应有()条边才能确保是一个连通图。
A.5 B.6 C.7 D.86.在一个具有n 个顶点的无向图中,要连通全部顶点至少需要()条边。
A.n B.n+1 C.n-1 D.n/27.具有n 个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是()。
A.n B.(n-1)2C.n-1 D.n28.给定有向图(如图7-40所示),则该图的一个强连通分量是:()。
A.{ V0,V1,V3,V2,V4,V5 } B.{ V0,V1,V2,V3,V4,V5 }C.{ V0,V1,V2,V3,V5,V4 } D.{ V0,V5,V1,V2,V3,V4 }9.如图7-41所示,若从图中顶点V0出发按深度搜索法进行遍历,则可能得到的一种顶点序列为();按宽度搜索法进行遍历,则可能得到的一种顶点序列为()。
图7-40 有向图图7-41 无向图① A.V0,V2,V1,V3,V4,V5B.V0,V2,V3,V1,V4,V5C.V0,V2,V3,V1,V5,V4D.V0,V3,V4,V5,V1,V2① A.V0,V2,V3,V1,V4,V5B.V0,V1,V2,V3,V4,V5C.V0,V1,V2,V3,V4,V5D.V0,V3,V2,V1,V4,V5 10.采用邻接表存储的图的深度优先遍历算法类似于树的()。
A.先序遍历B.中序遍历C.后序遍历D.按层遍历11.采用邻接表存储的图的宽度优先遍历算法类似于树的()。
数据结构课后习题答案
数据结构课后习题答案数据结构习题集答案第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={} 基本操作:InitComplex(&C,re,im)操作结果:构造一个复数C ,其实部和虚部分别为re 和imDestroyCmoplex(&C)操作结果:销毁复数CGet(C,k,&e)操作结果:用e 返回复数C 的第k 元的值Put(&C,k,e)操作结果:改变复数C的第k元的值为eIsAscending(C)操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0IsDescending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0Max(C,&e)操作结果:用e返回复数C的两个元素中值较大的一个Min(C,&e)操作结果:用e返回复数C的两个元素中值较小的一个}ADT ComplexADT RationalNumber{数据对象:D={s,m|s,m为自然数,且m不为0}数据关系:R={}基本操作:InitRationalNumber(&R,s,m)操作结果:构造一个有理数R,其分子和分母分别为s和m DestroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值Put(&R,k,e)操作结果:改变有理数R的第k元的值为eIsAscending(R)操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0IsDescending(R)操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0Max(R,&e)操作结果:用e返回有理数R的两个元素中值较大的一个Min(R,&e)操作结果:用e返回有理数R的两个元素中值较小的一个}ADT RationalNumber1.5 试画出与下列程序段等价的框图。
实用数据结构基础
第4章 队列
第4章 队列
知识点
队列的定义和特点 队列的存储实现及运算实现 队列的应用举例
难点
循环队列的特点及判断溢出的条件 利用队列的特点设计相关的应用问题
要求 熟练掌握以下内容: 熟练掌握以下内容:
队列的特点和基本运算 循环队列的特征和基本运算
了解以下内容: 了解以下内容:
队列运算的时间复杂性分析 队列的实际应用
(2)入队 int InQueue ( csequeue *q ,datatype x) { if (n= =MAXLEN) 队满" { printf ("队满"); 队满不能入队,返回0 return 0; // 队满不能入队,返回0 } else >rear=(q->rear+1 MAXLEN; { q->rear=(q->rear+1) % MAXLEN; >data[q->rear]=x; q->data[q->rear]=x; >n++; q->n++; 入队完成,返回1 return 1; // 入队完成,返回1 } }
4-1-2 队列的基本运算
(1)入队操作: InQueue(q,x) )入队操作: ( , ) 初始条件: 存在且未满. 初始条件:队q存在且未满. 存在且未满 操作结果:输入一个元素x到队尾 长度加1. 到队尾, 操作结果:输入一个元素 到队尾,长度加 . (2)出队操作: OutQueue(q,x) )出队操作: ( , ) 初始条件: 存在, 初始条件 队q存在,且非空. 存在 且非空. 操作结果:删除队首元素,长度减1. 操作结果:删除队首元素,长度减 . (3)读队头元素:ReadFront(q,x) )读队头元素: ( , ) 初始条件: 存在且非空. 初始条件: 队q存在且非空. 存在且非空 操作结果: 读队头元素,队列不变. 操作结果: 读队头元素,队列不变.
(完整版) 《数据结构》教材课后习题+答案
第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--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
第六章数据结构基础习题及参考答案
第六章数据结构基础习题及参考答案第六章数据结构基础一、选择题1.下列数据结构中,(C)不是数据逻辑结构。
A.树结构B.线性表结构C.存储器物理结构D.二叉树2.数据结构是(D)。
A.一种数据类型B.数据的存储结构C.一组性质相同的数据元素的结合D.相互之间存在一种或多种特定关系的数据元素的集合3.下列关于队列的叙述中,正确的是(C)。
A.在队列中只能入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是后进先出的线性表4.如果进栈序列为a1,a2,a3,a4,则可能的出栈序列是(B)A.a3,a1,a4,a2B.a2,a4,a3,a1C.a3,a4,a1,a2D.任意顺序5.链表不具备的特点是(A)A.可能随机访问任意一个节点B.插入和删除不需要移动任何元素C.不必事先估计存储空间D.所需空间与其长度成正比、6.已知某二叉树的后续遍历序列是DACBE,中序遍历序列是DEBAC,则它的前序遍历序列是(D)。
A.ACBEDB.DEABCC.DECABD.EDBCA7.某二叉树中度为2的结点有18个,则该二叉树中有(C)个叶子结点。
A.17B.18C.19D.20二、填空题1.数据元素是(数据)的基本单位,是对一个客观实体的数据描述。
2.简单地说,数据结构是指数据之间的(逻辑关系),即数据的逻辑结构。
3.数据的逻辑结构可用一个二元B=(K,R)来表示,其中K表示(数据元素集合),R表示(数据元素之间的前后关系)。
4.数据元素之间的关系有4种基本的存储表示方法,即(集合)、(线性结构)、(树)和(图)。
5.数据的运算中,(移位)是一个很重要的运算过程,插入、删除、修改和排序都包含着这种运算。
6.线性表是一种最简单、最常用的数据结构,通常一个线性表是由n 个性质相同的数据元素组成的(有限序列),其长度即线性表中元素的个数n,当n=0时,称为(空表)。
7.线性表是一种(线性)结构。
8.如果线性表中最常用的操作是存取第i个元素及其前驱的值,则采用(双向链表)存储方式节省时间。
实用数据结构基础第四版答案
实用数据结构基础第四版答案
1.以下关于链表的描述中,正确的是()
A.链表中节点之间存在逻辑关系
B.链表可以随机存取数据
C.链表的存储空间是连续的
D.链表适合存储结构性较简单的数据
答案:A、D
2.下列关于字符串的描述中,正确的是()
A.字符串可以利用顺序存储结构存储
B.字符串可以利用树形结构存储
C.字符串可以利用链表存储
D.字符串只能用数组存储
答案:A、C
3.下列关于图的描述中,正确的是()
A.图中的节点与边都有相应的属性
B.图具有识别和描述实体之间关系的能力
C.图可用链表来表示
D.图可用数组来表示
答案:A、B
4.关于树的描述,正确的是()
A.树可以被用来实现栈和队列
B.树是一种动态树
C.树能够快速实现关键字的查找
D.树是一种静态树
答案:B、C
5.下列哪项不属于哈希表的操作()
A.插入数据
B.删除数据
C.排序数据
D.查找数据
答案:C
6.下列关于树节点的描述中,不正确的是()
A.父节点的度等于子节点的总度
B.非叶子节点的度不大于其子节点数
C.叶子节点的度一定大于其子节点数
D.根节点的度一定大于其子节点数
答案:C
7.关于二叉树的特性。
实用数据结构基础(第四版)课后习题
一、判断题(第一章绪论)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、串得长度就是指串中不同字符得个数。
数据结构课后习题答案
第1章绪论一、基础知识题1.1 简述下列概念数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。
【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。
数据元素是数据的基本单位。
在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。
数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。
每一种计算机程序设计语言都定义有自己的数据类型。
“数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。
作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。
而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。
数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。
数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。
数据结构在计算机中的表示称为物理结构,又称存储结构。
是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。
逻辑结构与计算机无关。
算法是对特定问题求解步骤的一种描述,是指令的有限序列。
其中每一条指令表示一个或多个操作。
一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。
1.2数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面?【解答】数据的逻辑结构分为线性结构和非线性结构。
(也可以分为集合、线性结构、树形结构和图形即网状结构)。
逻辑结构是数据组织的某种“本质性”的东西:(1)逻辑结构与数据元素本身的形式、内容无关。
(2)逻辑结构与数据元素的相对位置无关。
(3)逻辑结构与所含数据元素的个数无关。
数据结构课后习题及答案
填空题(10 * 1’ = 10’)一、概念题2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。
2.3.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。
2.6.带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。
3.6.循环队列的引入,目的是为了克服假溢出。
4.2.长度为0的字符串称为空串。
4.5.组成串的数据元素只能是字符。
4.8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。
7.2.为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。
5.7.广义表的深度是广义表中括号的重数7.8.有向图G可拓扑排序的判别条件是有无回路。
7.9.若要求一个稠密图的最小生成树,最好用Prim算法求解。
8.8.直接定址法法构造的哈希函数肯定不会发生冲突。
9.2.排序算法所花费的时间,通常用在数据的比较和交换两大操作。
1.1.通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。
1.2.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。
1.3.存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。
1.4.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。
1.5.一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。
2.8.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。
2.9.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。
数据结构课后习题答案
第1章绪论一、基础知识题1.1 简述下列概念数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。
【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。
数据元素是数据的基本单位。
在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。
数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。
每一种计算机程序设计语言都定义有自己的数据类型。
“数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。
作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。
而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。
数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。
数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。
数据结构在计算机中的表示称为物理结构,又称存储结构。
是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。
逻辑结构与计算机无关。
算法是对特定问题求解步骤的一种描述,是指令的有限序列。
其中每一条指令表示一个或多个操作。
一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。
1.2数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面?【解答】数据的逻辑结构分为线性结构和非线性结构。
(也可以分为集合、线性结构、树形结构和图形即网状结构)。
逻辑结构是数据组织的某种“本质性”的东西:(1)逻辑结构与数据元素本身的形式、内容无关。
(2)逻辑结构与数据元素的相对位置无关。
(3)逻辑结构与所含数据元素的个数无关。
数据结构课后习题详解(超完整超经典)
数据结构课后习题详解(超完整超经典)第1章绪论1.1简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。
解:数据是对客观事物的符号表示。
在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
存储结构是数据结构在计算机中的表示。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。
是对一般数据类型的扩展。
1.2试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。
解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。
一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。
抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。
在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。
1.3设有数据结构(D,R),其中Dd1,d2,d3,d4,Rr,rd1,d2,d2,d3,d3,d4试按图论中图的画法惯例画出其逻辑结构图。
解:1.4试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。
解:数据对象:D={r,i|r,i为实数}数据关系:R={}基本操作:操作结果:构造一个复数C,其实部和虚部分别为re和imDetroyCmople某(&C)操作结果:销毁复数CGet(C,k,&e)操作结果:用e返回复数C的第k元的值操作结果:改变复数C的第k元的值为e操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0Put(&C,k,e)IAcending(C)ADTRationalNumber{数据对象:D={,m|,m为自然数,且m不为0}数据关系:R={}基本操作:InitRationalNumber(&R,,m)操作结果:构造一个有理数R,其分子和分母分别为和mDetroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值操作结果:改变有理数R 的第k元的值为e操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0操作结果:用e返回有理数R的两个元素中值较大的一个操作结果:用e 返回有理数R的两个元素中值较小的一个Put(&R,k,e)IAcending(R)IDecending(R)Ma某(R,&e)Min(R,&e) IDecending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0操作结果:用e返回复数C的两个元素中值较大的一个操作结果:用e 返回复数C的两个元素中值较小的一个Ma某(C,&e)Min(C,&e) }ADTRationalNumber(1)product=1;i=1;while(i<=n){product某=i;i++;}(2)i=0;do{i++;}while((i!=n)&&(a[i]!=某));(3)witch{cae某1.5试画出与下列程序段等价的框图。
- 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。