数据结构C++版课后作业章带答案

数据结构C++版课后作业章带答案
数据结构C++版课后作业章带答案

论章绪第1课后习题讲解1. 填空

(1) 从逻辑关系上讲,数据结构主要分为()、()、()和()。

(2) 数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。

(3)算法在发生非法操作时可以作出处理的特性称为()。

2. 选择题

⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针

⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。则表示该遗产继承关系的最合适的数据结构应该是()。 A 树 B 图 C 线性表 D 集合

3. 判断题

(1) 每种数据结构都具备三个基本操作:插入、删除和查找。

章线性表2 第

课后习题讲解1. 填空

⑵顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是()。第5个元素的存储地址=第1个元素的存储地址+(5-1)×2=108

⑶设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为()。【解答】p->next=(p->next)->next

⑸非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足()。p->next=head

⑹在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是();删除开始结点的操作序列为()。。【解答】s->next

=rear->next; rear->next

=s; rear =s; q=rear->next->next; rear->next->next=q->next; delete q;

选择题2.

)的存储结构,线性表的链接存储结构是一种⑴线性表的顺序存储结构是一种(,【解答】A索引存取 D 散列存取 C A ()的存储结构。随

机存取 B 顺序存取。2.2.1B 【分析】参见

部分地址必须是连必须是连续的 B ⑵线性表采用链接存储时,其地址()。 A

【分析】线性表的链接存储D 连续与否均可以【解答】一定是不连续的续的 C D

是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以连续,也可以不连续,甚至可以零散分布在内存中任意位置。

⑶单循环链表的主要优点是()。 A 不再需要头指针了 B 从表中任一

结点出发都能扫描到整个链表; C 已知某个结点的位置后,能够容易找

到它的直接前趋; D

在进行插入、删除操作时,能更好地保证链表不断开。【解答】B

⑷链表不具有的特点是()。 A 可随机访问任一元素 B 插入、删除不

需要移动元素 C 不必事先估计存储空间 D 所需空间与线性表长度成正比. 【解答】A

⑸若某线性表中最常用的操作是取第i 个元素和找第i个元素的前趋,则采用()存储方法最节省时间。 A 顺序表 B 单链表 C 双链表 D 单循环链表【解答】A 【分析】线性表中最常用的操作是取第i 个元素,所以,应选择随机存取结构即顺序表,同时在顺序表中查找第i个元素的前趋也很方便。单链表和单循环链表既不能实现随机存取,查找第i个元素的前趋也不方便,双链表虽然能快速查找第i个元素的前趋,但不能实现随机存取。

⑽使用双链表存储线性表,其优点是可以()。 A 提高查找速度 B 更方便数据的插入和删除 C 节约存储空间 D 很快回收存储空间【解答】B 【分析】在链表中一般只能进行顺序查找,所以,双链表并不能提高查找速度,因为双链表中有两个指针域,显然不能节约存储空间,对于动态存储分配,回收存储空间的速度是一样的。由于双链表具有对称性,所以,其插入和删除操作更加方便。

⑾在一个单链表中,已知q所指结点是p所指结点的直接前驱,若在q

和p之间插入s所指结点,则执行()操作。 A s->next=p->next;

p->next=s; B q->next=s;

s->next=p; C p->next=s->next; s->next=p; D p->next=s; s->next=q; 【解答】B,本题答案不是非常合理,应该换顺序更好!考试可以修改说: 已知q所指结点,在q后面插入一个节点。

⑿在循环双链表的p所指结点后插入s所指结点的操作是()。 A

p->next=s;

s->prior=p; p->next->prior=s; s->next=p->next; B p->next=s;

p->next->prior=s; s->prior=p; s->next=p->next; C s->prior=p; s->next=p->next; p->next=s; p->next->prior=s; D s->prior=p;

s->next=p->next; p->next->prior=s; p->next=s 【解答】D

3. 判断题

⑴线性表的逻辑顺序和存储顺序总是一致的。

【解答】错。顺序表的逻辑顺序和存储顺序一致,链表的逻辑顺序和存储顺序不一定一致。

⑵线性表的顺序存储结构优于链接存储结构。

⑷线性结构的基本特征是:每个元素有且仅有一个直接前驱和一个直接后继。

【解答】错。每个元素最多只有一个直接前驱和一个直接后继,第一个元素没有前驱,最后一个元素没有后继。

⑸在单链表中,要取得某个元素,只要知道该元素所在结点的地址即可,因此单链表是随机存取结构。

【解答】错。要找到该结点的地址,必须从头指针开始查找,所以单链表是顺序存取结构。

4.请说明顺序表和单链表各有何优缺点,并分析下列情况下,采用何种存储结构更好些。⑴若线性表的总长度基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素。⑵如果n个线性表同时并存,并且在处理过程中各表的长度会动态发生变化。⑶描述一个

城市的设计和规划。

【解答】顺序表的优点:①无需为表示表中元素之间的逻辑关系而增加额外的存储空间;②可以快速地存取表中任一位置的元素(即随机存取)。顺序表的缺点:①

插入和删除操作需移动大量元素;②表的容量难以确定;③造成存储空间的“碎片”。单链表的优点:①不必事先知道线性表的长度;②插入和删除元素时只需修改指针,不用移动元素。单链表的缺点:①指针的结构性开销;②存取表中任意元素不方便,只能进行顺序存取。⑴应选用顺序存储结构。因为顺序表是随机存取结构,单链表是顺序存取结构。本题很少进行插入和删除操作,所以空间变化不大,且需要快速存取,所以应选用顺序存储结构。⑵应选用链接存储结构。链表容易实现表容量的扩充,适合表的长度动态发生变化。

⑶应选用链接存储结构。因为一个城市的设计和规划涉及活动很多,需要经常修改、扩充和删除各种信息,才能适应不断发展的需要。而顺序表的插入、删除的效率低,故不合适。

5.算法设计

(1) 假设在长度大于1的循环链表中,即无头结点也无头指针,s为指向链表中某个的前趋结点。结点的指针,试编写算法删除结点s栈、队列和串——章特殊线性表3 第

课后习题讲解1. 填空

⑴设有一个空栈,栈顶指针为1000H,现有输入序列为1、2、3、4、5,经过push,push,pop,push,pop,push,push后,输出序列是(),

栈顶指针为()。【解答】23,1003H

⑵栈通常采用的两种存储结构是();其判定栈空的条件分别是(),

判定栈满的条件分别是()。

【解答】顺序存储结构和链接存储结构(或顺序栈和链栈),栈顶指针top= -1和top=NULL,栈顶指针top等于数组的长度和内存无可用空间

⑶()可作为实现递归函数调用的一种数据结构。 (栈或者队列选一个)【解答】栈【分析】递归函数的调用和返回正好符合后进先出性。

⑸栈和队列是两种特殊的线性表,栈的操作特性是(),队列的操作特

性是(),栈和队列的主要区别在于()。【解答】后进先出,先进先出,对插入和删除操作限定的位置不同

⑹循环队列的引入是为了克服()。【解答】假溢出

⑺数组Q[n]用来表示一个循环队列,front为队头元素的前一个位置,rear为队尾元素的位置,计算队列中元素个数的公式为()。

(rear-front+n)% n

2. 选择题

⑴若一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是()。 A 不确定 B n-i C n-i-1 D n-i+1 【解答】D 【分析】此时,输出序列一定是输入序列的逆序。

⑵设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素从队列输出的元素

的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是()。 A 6 B 4 C 3 D 2

【解答】C 【分析】由于队列具有先进先出性,所以,此题中队列形同虚设,即出栈的顺序也是e2、e4、e3、e6、e5、e1。

⑶一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是()。

A 54321

B 45321

C 43512

D 12345 【解答】C 【分析】此题有一个技巧:在输出序列中任意元素后面不能出现比该元素小并且是升序(指的是元素的序号)的两个元素。

⑷设计一个判别表达式中左右括号是否配对的算法,采用()数据结构最佳 A 顺序表 B 栈 C 队列 D 链表

【解答】B 【分析】每个右括号与它前面的最后一个没有匹配的左括号配对,因此具有后进先出性。

⑸在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印

缓冲区,该缓冲区应该是一个()结构。 A 栈 B队列 C 数组 D线性表【解答】B【分析】先进入打印缓冲区的文件先被打印,因此具有先进先

出性。

⑹一个队列的入队顺序是1,2,3,4,则队列的输出顺序是()。 A 4321

B 1234

C 1432

D 3241

【解答】B 【分析】队列的入队顺序和出队顺序总是一致的。

⑺栈和队列的主要区别在于()。 A 它们的逻辑结构不一样 B 它们的

存储结构不一样 C 所包含的运算不一样 D 插入、删除运算的限定不一样【解答】D

《数据结构》课后习题答案

第1章绪论 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 答案: 数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。 数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。 数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。 数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。 逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。 存储结构:数据对象在计算机中的存储表示,也称为物理结构。 抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。 2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 答案: 例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。 这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。 即相同的逻辑结构,可以对应不同的存储结构。 3.简述逻辑结构的四种基本关系并画出它们的关系图。 答案: (1)集合结构 数据元素之间除了“属于同一集合”的关系外,别无其他关系。例如,确定一名学生是否为班级成员,只需将班级看做一个集合结构。 (2)线性结构 数据元素之间存在一对一的关系。例如,将学生信息数据按照其入学报到的时间先后顺序进行排列,将组成一个线性结构。 (3)树结构

数据结构书面作业练习题

书面作业练习题 李英龙 湖南科技大学数学与计算科学学院

内容简介 在习题部分,既有选择题、判断题,也有用图表解答的练习题、算法设计题或综合解答分析题。并且配有部分练习题的答案供学生自学、练习、参考。 目录 书面作业练习题 习题一绪论 -------------------------------------------------------------3 习题二顺序表示(线性表、栈和队列)-----------------------------------------6 习题三链表(线性表、栈和队列)---------------------------------------------9 习题四串-----------------------------------------------------------------12 习题五数组 --------------------------------------------------------------13 习题六树与二叉树 -------------------------------------------------------15 习题七图-----------------------------------------------------------------24 习题八查找---------------------------------------------------------------30 习题九排序---------------------------------------------------------------33

数据结构习题及参考答案

习题1 一、单项选择题 A1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 C2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 D3.树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 B4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n) C.O(n) D.O(3n) CA5.算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6.计算机算法指的是(1),它具备输入,输出和(2)等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。 A.低 B.高 C.相同 D.不好说 8.数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9.数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对

数据结构第10章 习题答案

1.下列排序算法中,其中( D )是稳定的。 A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序 2.有一组数据(15,9,7,8,20,-1,7,4)用快速排序的划分方法进行一趟划分后数据的排序为 ( A )(按递增序)。 A.下面的B,C,D都不对。 B.9,7,8,4,-1,7,15,20 C.20,15,8,9,7,-1,4,7 D. 9,4,7,8,7,-1,15,20 3.下列排序算法中,在每一趟都能选出一个元素放到其最终位置上,并且其时间性能受数据初始特性影响的是:( B )。 A. 直接插入排序 B. 快速排序 C. 直接选择排序 D. 堆排序 4.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用( D )方法最快。 A.起泡排序 B.快速排列 C.Shell排序 D.堆排序 E.简单选择排序 5.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为( A )排序法。 A. 插入 B. 选择 C. 希尔 D. 二路归并 6. 在排序算法中,每次从未排序的记录中挑出最小(或最大)关键码字的记录,加入到已排序记录的末尾,该排序方法是( A )。 A. 选择 B. 冒泡 C. 插入 D. 堆 7. 若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行( C )次比较。 A. 3 B. 10 C. 15 D. 25 8. 对序列{15,9,7,8,20,-1,4,} 用希尔排序方法排序,经一趟后序列变为{15,-l,4,8,20,9,7}则该次采用的增量是 ( B ) A. l B. 4 C. 3 D. 2 9. 堆排序是( E )类排序 A. 插入 B. 交换 C. 归并 D. 基数 E. 选择 10.排序方法有许多种,(1)法从未排序的序列中依次取出元素,与已排序序列(初始时为空)中的元素作比较,将其放入已排序序列的正确位置上;(2)法从未排序的序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端;交换排序方法是对序列中的元素进行一系列比较,当被比较的两元素逆序时,进行交换;(3)和(4)是基于这类方法的两种排序方法,而(4)是比(3)效率更高的方法;(5)法是基于选择排序的一种排序方法,是完全二叉树结构的一个重要应用。 (1)--(5): A.选择排序 B.快速排序 C.插入排序 D.起泡排序 E.归并排序 F.shell排序 G.堆排序 H.基数排序 10.1C 5 2A 3D 4B 5G 1.若不考虑基数排序,则在排序过程中,主要进行的两种基本操作是关键字的__ ____和记录的_____。比较,移动 2.分别采用堆排序,快速排序,冒泡排序和归并排序,对初态为有序的表,则最省时间的是_____算法,最费时间的是______算法。冒泡,快速 3. 设用希尔排序对数组{98,36,-9,0,47,23,1,8,10,7}进行排序,给出的步长(也称增量序列)依次是4,2,1则排序需__________趟,写出第一趟结束后,数组中数据的排列次序__________。3,(10,7,-9,0,47,23,1,8,98,36) 4.对给定文件(28,07,39,10,65,14,61,17,50,21)选择第一个元素28进行划分,写出其快速排序第一遍的排序过程。

(完整版)数据结构练习题(含答案)

数据结构练习题 习题1 绪论 1.1 单项选择题 1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。 ① A.操作对象B.计算方法C.逻辑结构D.数据映象 ② A.存储结构B.关系C.运算D.算法 2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其中D是①的有限集合,R是D上的②有限集合。 ① A.算法B.数据元素C.数据操作D.数据对象 ② A.操作B.映象C.存储D.关系 3. 在数据结构中,从逻辑上可以把数据结构分成。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 4. 算法分析的目的是①,算法分析的两个主要方面是②。 ① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系 C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性 ② A. 空间复杂性和时间复杂性 B. 正确性和简明性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 5. 计算机算法指的是①,它必具备输入、输出和②等五个特性。 ① A. 计算方法 B. 排序方法 C. 解决问题的有限运算序列 D. 调度方法 ② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性 1.2 填空题(将正确的答案填在相应的空中) 1. 数据逻辑结构包括、和三种类型,树形结构和图形结构合称为。 2. 在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。 3. 在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。 4. 在图形结构中,每个结点的前驱结点数和后续结点数可以。 5. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。 6. 算法的五个重要特性是__ __ , __ __ , ___ _ , __ __ , _ ___。 7. 分析下面算法(程序段),给出最大语句频度,该算法的时间复杂度是__ __。 for (i=0;i

数据结构作业题及参考答案

东北农业大学网络教育学院 数据结构作业题(一) 一、选择题(每题2分,共20分) 1.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。 A、O(n) B、O (n/2) C、O (1) D、O (n2) 2.带头结点的单链表first为空的判定条件是()。 A、first == NULL; B、first->link == NULL; C、first->link == first; D、first != NULL; 3.在一棵树中,()没有前驱结点。 A、分支结点 B、叶结点 C、树根结点 D、空结点 4.在有向图中每个顶点的度等于该顶点的()。 A、入度 B、出度 C、入度与出度之和 D、入度与出度之差 5.对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为()的值除以9。 A、20 B、18 C、25 D、22 6.下列程序段的时间复杂度为()。 s=0; for(i=1;i

数据结构第十章习题课

1.下列排序算法中,其中()是稳定的。 A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序 2.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。 A. 快速排序 B. 堆排序 C. 归并排序 D. 直接插入排序3.排序趟数与序列的原始状态有关的排序方法是( )排序法。 A.插入 B. 选择 C. 冒泡 D. 快速4.对一组数据(84,47,25,15,21)排序,数据的排列次序在排序的过程中 的变化为(1)84 47 25 15 21 (2)15 47 25 84 21 (3)15 21 25 84 47 (4) 15 21 25 47 84 则采用的排序是( )。 A. 选择 B. 冒泡 C. 快速 D. 插入5.对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是()排序。 A. 选择 B. 快速 C. 希尔 D. 冒泡6.若上题的数据经一趟排序后的排列为{9,15,7,8,20,-1,4},则采用的 是()排序。 A.选择 B. 堆 C. 直接插入 D. 冒泡 7.在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是()A.直接插入排序B.冒泡排序C.简单选择排序 8.下列排序算法中,()算法可能会出现下面情况:在最后一趟开始之前,所有元素都不在其最终的位置上。 A. 堆排序 B. 冒泡排序 C. 快速排序 D. 插入排序 9. 下列排序算法中,占用辅助空间最多的是:( ) A. 归并排序 B. 快速排序 C. 希尔排序 D. 堆排序10.用直接插入排序方法对下面四个序列进行排序(由小到大),元素比较次数 最少的是()。 A.94,32,40,90,80,46,21,69 B.32,40,21,46,69,94,90,80 C.21,32,46,40,80,69,90,94 D.90,69,80,46,21,32,94,40 11. 若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行()次比较。 A. 3 B. 10 C. 15 D. 25 12.对n个记录的线性表进行快速排序为减少算法的递归深度,以下叙述正确

数据结构复习题及答案

复习题(一) 一.填空题(每空1分,共15分) 1.一个算法的效率可分为___________________效率和___________________效率。 2.__________________是被限定为只能在表的一端进行插入运算,在表的另一端 进行删除运算的线性表。 3.设S=“A;/document/Mary.doc”,则strlen(S)= _______________,“/”的字符定位 的位置为_______________。 4.设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列 序为主序顺序存储,则元素a[32,58]的存储地址为_______________。 5.一棵深度为6的满二叉树有_______________个分支结点和_______________个 叶子。 6.用5个权值{3, 2, 4, 5, 1}构造的哈夫曼(Huffman)树的带权路径长度 是。 7.设有一稀疏图G,则G采用存储较省空间。 8.快速排序算法是对算法的一种改进。 9.在数据的存放无规律而言的线性表中进行检索的最佳方法 是。 10.大多数排序算法都有两个基本的操作: 和。 11.设要将序列(Q, H, C, Y, P, A, M, S, R, D, F, X)中的关键码按字母序的升序重 新排列,则:快速排序一趟扫描的结果是。 二.选择题(每题2分,共30分) ()1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为: (A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构 ()2. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要

《数据结构》填空作业题(答案)

《数据结构》填空作业题答案 第 1 章绪论(已校对无误) 1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。 2.程序包括两个内容:数据结构和算法。 3.数据结构的形式定义为:数据结构是一个二元组:Data Structure =( D, S)。 4.数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。 5.数据的逻辑结构可以分类为线性结构和非线性结构两大类。 6.在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。 7.在树形结构中,数据元素之间存在一对多的关系。 8.数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。 9.数据的逻辑结构包括线性结构、树形结构和图形结构 3 种类型,树型结构和有向 图结构合称为非线性结构。 10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑 关系由存储单元位置的邻接关系来体现。 11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑 关系由附加的指针域来体现。 12.数据的存储结构可用 4 种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。 13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。 14.数据结构在物理上可分为顺序存储结构和链式存储结构。 15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数 据的实现方法。 16.数据元素可由若干个数据项组成。 17.算法分析的两个主要方面是时间复杂度和空间复杂度。 18.一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂 度是用该算法在运行过程中所占用的存储空间的大小来度量的。 19.算法具有如下特点:有穷性、确定性、可行性、输入、输出。 20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切 的定义,并在有穷时间内计算出结果。 21. 下面程序段的时间复杂度为㏒ 3n 。 1

数据结构各章作业题目

第一章作业 一、选择题 1.被计算机加工的数据元素不是孤立的,它们彼此之间一般存在某种关系,通常把数据元素之间的 这种关系称为( )。 A. 规则 B. 结构 C. 集合 D. 运算 2.在Data_Structure=(D,S)中,D是( )的有限集合。 A. 数据元素 B. 算法 C. 数据操作 D.数据对象 3.计算机所处理的数据一般具有某种关系,这是指( )之间存在的某种关系。 A. 数据与数据 B. 数据元素与数据元素 C. 元素内数据项与数据项 D. 数据文件内记录与记录 4.顺序存储表示中数据元素之间的逻辑关系是由( )表示的。 A. 指针 B. 逻辑顺序 C. 存储位置 D. 问题上下文 5.链接存储表示中数据元素之间的逻辑关系是由( )表示的。 A. 指针 B. 逻辑顺序 C. 存储位置 D. 问题上下文 6.从逻辑上可将数据结构分为( )。 A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 内部结构和外部结构 D. 线性结构和非线性结构 7.以下选项属于线性结构的是( )。 A. 广义表 B. 二叉树 C. 串 D. 稀疏数组 8.以下选项属于非线性结构的是( )。 A. 广义表 B. 队列 C. 优先队列 D. 栈 9.以下属于逻辑结构的是( ) A. 顺序表 B. 散列表 C. 有序表 D. 单链表 10.一个完整的算法应该具有( )等特性。 A. 可执行性、可修改性和可维护性 B. 可行性、确定性和有穷性

C. 确定性、有穷性和可靠性 D. 正确性、可读性和有效性 11.若一个问题既可以用迭代方法也可以用递归方法求解,则( )的方法具有更高的时空效率。 A. 迭代 B. 递归 C. 先递归后迭代 D. 先迭代后递归 12.一个递归算法必须包括( ) A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D. 终止条件和迭代部 分 13.算法的时间复杂度与( )有关。 A. 问题规模 B. 源程序长度 C. 计算机硬件运行速度 D. 编译后执行程序的 质量 二、指出下列各算法的功能并求出其时间复杂度。 (1) int Prime(int n){ int i=2,x=(int)sqrt(n); //sqrt(n)为求n的平方根 while(i<=x){ if(n%i==0)break; i++; } if(i>x) return 1; else return 0; } (2) int sum1(int n){ int p=1,s=0; for(int i=1;i<=n;i++){ p*=i;s+=p;

数据结构课后习题答案

数据结构习题集答案 第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 和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值

数据结构习题及参考答案 .

习题1 一、单项选择题 1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 3.树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n) C.O(n) D.O(3n) 5.算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6.计算机算法指的是(1),它具备输入,输出和(2)等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。 A.低 B.高 C.相同 D.不好说 8.数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9.数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对

第二章数据结构习题作业

2.6.数据的存储结构主要有哪两种?它们之间的本质区别是什么? 答:主要有:顺序存储结构和链式存储结构两种。 区别: 顺序存储结构是借助元素在存储器的相对位置来表示数据间的逻辑关系,而链式存储结构是借助指针来表示数据间的逻辑关系。 2.7 设数据结构的集合为D={d1,d2,d3,d4,d5},试指出下列各关系R所对应的数据结构B=(D,R)中哪些是线性结构,哪些是非线性结构。 (1)R={(d1,d2),(d2,d4),(d4,d2),(d2,d5),(d4,d1)}; ( 2 ) R={(d5,d4),(d4,d3),(d3,d1),(d1,d2)}; ( 3 ) R={(di,di+1)|i=4,3,2,1}; ( 4 ) R={(di,dj)|i

2.〉链表:扩展性强,易于删除,添加;内存中地址非连续;长度可以实时变化;适用于需要进行大量增添或删除元素操作而对访问元素无要求的程序。 (2)缺点 顺序表:插入,删除操作不方便;扩展性弱;不易删除,添加。 链表:不易于查询,索引慢。 (3)顺序表和链表的优缺点是互相补充的关系。 2.17 试比较单向链表与双向链表的优缺点。 答:(1)优点 单向链表:耗存储空间小; 双向链表:可以从任何一点开始进行访问; (2)缺点: 单向链表:访问时必须从头开始,耗时。 双向链表:耗存储空间大。 (3)两者为互补关系 2.22 CQ[0:10]为一循环队列,初态front=rear=1,画出下列操作后队的头,尾指示器状态: (1)d,e,h,g,入队; (2)d,e出队; (3)I,j,k,l,m入队; (4)b出队;

数据结构课后作业答案

1. 画出下图所示的无向图的邻接表。列出深度优先和广度优先搜索 遍历该图所的顶点序列和边的序列。 邻接表: 深度优先搜索:顶点序列:1 -2 -3- 4- 5 -6 边的序列:(1,2) (2,3) (3,4) (4,5) (5,6) 广度优先搜索:顶点序列:1 -2 -3 -6 -5-4 边的序列:(1,2) (1,3) (1,6) (1,5) (5,4) 2 已知以二维数组表示的图的邻接矩阵如下图所示。试分别画出自顶点1出发进 行遍历所得的深度优先生成树和广度优先生成树。 1 2 3 4 5 6 7 8 9 10 1 0 0 0 0 0 0 1 0 1 0 2 0 0 1 0 0 0 1 0 0 0 3 0 0 0 1 0 0 0 1 0 0 4 0 0 0 0 1 0 0 0 1 0 5 0 0 0 0 0 1 0 0 0 1 6 1 1 0 0 0 0 0 0 0 0 7 0 0 1 0 0 0 0 0 0 1 1 5 2 4 6 3

8 1 0 0 1 0 0 0 0 1 0 9 0 0 0 0 1 0 1 0 0 1 10 1 0 0 0 0 1 0 0 0 0 解:邻接矩阵所表示的图如下: 自顶点1出发进行遍历所得的深度优先生成树: 自顶点1出发进行遍历所得的广度优先生成树:

3 请对下图的无向带权图 (1)写出它的邻接矩阵,并按普里母算法求其最小生成树。 (2)写出它的邻接表,并按克鲁斯卡尔算法求其最小生成树。 解:(1) 邻接矩阵: ∞ 4 3 ∞ ∞ ∞ ∞ ∞ 4 ∞ 5 5 9 ∞ ∞ ∞ 3 5 ∞ 5 ∞ ∞ ∞ 5 ∞ 5 5 ∞ 7 6 5 4 ∞ 9 ∞ 7 ∞ 3 ∞ ∞ ∞ ∞ ∞ 6 3 ∞ 2 ∞ ∞ ∞ ∞ 5 ∞ 2 ∞ 6 ∞ ∞ 5 4 ∞ ∞ 6 ∞ 普里母算法求得的最小生成树: 7 5 9 6 4 5 6 3 5 5 3 4 e d 2 5 c b h f g a

数据结构作业(附答案)

1.数据的最小单位是( A )。 (A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量 2.下面关于线性表的叙述错误的是(D)。 (A) 线性表采用顺序存储必须占用一片连续的存储空间 (B) 线性表采用链式存储不必占用一片连续的存储空间 (C) 线性表采用链式存储便于插入和删除操作的实现 (D) 线性表采用顺序存储便于插入和删除操作的实现 3.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为(C)。 (A) R-F (B) F-R (C) (R-F+M)%M (D) (F-R+M)%M 4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为(A)。 (A) BADC(B)BCDA (C) CDAB (D) CBDA 5.设某棵二叉树中有2000个结点,则该二叉树的最小高度为(C)。 (A) 9 (B) 10 (C) 11(D) 12 6.下面程序的时间复杂为(B) for(i=1,s=0;i<=n;i++){t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;} (A) O(n) (B) O(n2)(C) O(n3) (D) O(n4) 7.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为(C)。 (A) q=p->next;p->data=q->data;p->next=q->next;free(q); (B) q=p->next;q->data=p->data;p->next=q->next;free(q); (C) q=p->next;p->next=q->next;free(q); (D) q=p->next;p->data=q->data;free(q); 8.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为(C )。 (A)O(n) (B) O(nlog2n) (C) O(1)(D) O(n2) 9.设一棵二叉树的深度为k,则该二叉树中最多有(D )个结点。 (A) 2k-1 (B) 2k(C) 2k-1(D) 2k-1 10.设用链表作为栈的存储结构则退栈操作( B )。 (A) 必须判别栈是否为满(B) 必须判别栈是否为空 (C) 判别栈元素的类型(D) 对栈不作任何判别 11.函数substr(“DATASTRUCTURE”,5,9)的返回值为(A )。 (A) “STRUCTURE”(B) “DATA” (C) “ASTRUCTUR”(D) “DATASTRUCTURE” 12.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是( C)。 (A) N0=N1+1 (B) N0=N l+N2(C) N0=N2+1(D) N0=2N1+l 13.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是(B )。 (A) 空或只有一个结点(B) 高度等于其结点数 (C) 任一结点无左孩子(D) 任一结点无右孩子 14. 深度为k的完全二叉树中最少有( B )个结点。 (A) 2k-1-1 (B) 2k-1(C) 2k-1+1(D) 2k-1

数据结构课后习题答案清华大学出版社殷人昆

1-1什么是数据? 它与信息是什么关系? 【解答】 什么是信息?广义地讲,信息就是消息。宇宙三要素(物质、能量、信息)之一。它是现实世界各种事物在人们头脑中的反映。此外,人们通过科学仪器能够认识到的也是信息。信息的特征为:可识别、可存储、可变换、可处理、可传递、可再生、可压缩、可利用、可共享。 什么是数据?因为信息的表现形式十分广泛,许多信息在计算机中不方便存储和处理,例如,一个大楼中4部电梯在软件控制下调度和运行的状态、一个商店中商品的在库明细表等,必须将它们转换成数据才能很方便地在计算机中存储、处理、变换。因此,数据(data)是信息的载体,是描述客观事物的数、字符、以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。在计算机中,信息必须以数据的形式出现。 1-2什么是数据结构? 有关数据结构的讨论涉及哪三个方面? 【解答】 数据结构是指数据以及相互之间的关系。记为:数据结构= { D, R }。其中,D是某一数据对象,R是该对象中所有数据成员之间的关系的有限集合。 有关数据结构的讨论一般涉及以下三方面的内容: ①数据成员以及它们相互之间的逻辑关系,也称为数据的逻辑结构,简称为数据结构; ②数据成员极其关系在计算机存储器内的存储表示,也称为数据的物理结构,简称为存储结构; ③施加于该数据结构上的操作。 数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储不是一码事,是与计算机存储无关的。因此,数据的逻辑结构可以看作是从具体问题中抽象出来的数据模型,是数据的应用视图。数据的存储结构是逻辑数据结构在计算机存储器中的实现(亦称为映像),它是依赖于计算机的,是数据的物理视图。数据的操作是定义于数据逻辑结构上的一组运算,每种数据结构都有一个运算的集合。例如搜索、插入、删除、更新、排序等。 1-3数据的逻辑结构分为线性结构和非线性结构两大类。线性结构包括数组、链表、栈、 队列、优先级队列等; 非线性结构包括树、图等、这两类结构各自的特点是什么? 【解答】 线性结构的特点是:在结构中所有数据成员都处于一个序列中,有且仅有一个开始成员和一个终端成员,并且所有数据成员都最多有一个直接前驱和一个直接后继。例如,一维数组、线性表等就是典型的线性结构 非线性结构的特点是:一个数据成员可能有零个、一个或多个直接前驱和直接后继。例如,树、图或网络等都是典型的非线性结构。 1-4.什么是抽象数据类型?试用C++的类声明定义“复数”的抽象数据类型。要求 (1) 在复数内部用浮点数定义它的实部和虚部。 (2) 实现3个构造函数:缺省的构造函数没有参数;第二个构造函数将双精度浮点数赋给复数的实部,虚部置为0;第三个构造函数将两个双精度浮点数分别赋给复数的实部和虚部。 (3) 定义获取和修改复数的实部和虚部,以及+、-、*、/等运算的成员函数。

数据结构练习题及

数据结构练习题及参考答案

《数据结构》练习题 一、解答题(共50分) 1、(8分)假设用于通讯的电文字符集及其出现的频率如下表所 请为这8个字符设计哈夫曼编码,并画出其哈夫曼树,计算 WPL。 2.(8分)若一棵二叉树中序遍历和后序遍历序列分别为: DBEHGAFIC和DHGEBIFCA。试画出这棵二叉树,并写出其 先序遍历和层序遍历序列。 3.(16分)以下无向网络以邻接表为存储结构(假设邻接表的 顶点表按字母a、b、c、d、e、f、g、h的顺序依次存储,邻接表 的边表结点按顶点的下标由小到大链接)。请画出其邻接表,并 写出从顶点f出发,分别进行深度和广度优先遍历的序列,写出用Prime方法从顶点c 开始产生最小生成树的边的序列。 4.(8分)已知键值序列为(44,39,67,25,52,59,43,84,54,58,15,26,12,73,92,69),取填充因子α=0.8,采用线性探查法处理冲突,试构造散列表。 ⒌(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81),用希尔排序方法进行排序,d1=5,d2=3,d3=1,则第二趟的排序结果是()。 ⒍(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81) ,用堆(大根堆)排序方法进 行排序,第一趟的排序结果是()。

二、完善程序(共20分,每空2分) 1.假设一组递减有序的原始数据存储在数组r中,存放元素的下标下限为low,下标上限为high,以下是在数组中查找数值为k的折半查找算法。请填空完善程序。 int BinSearch(int r[ ], int low,int high,int k) { int l,h,m; l= low; h= high; while ( ⑴) { m= ⑵; if (k < r[m]) ⑶; else if (k > r[m]) ⑷; else return m; } return 0; } 2. 以下程序功能是将数组r中,从下标first到end之间的元素进行快速排序的分区。请填空,完善程序。 int Partition(int r[ ], int first, int end) { int i,j,t; i=first; j=end; //初始化 while ( ⑸) { while (i

数据结构习题与答案

第 1 章绪论 课后习题讲解 1. 填空 ⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 【解答】数据元素 ⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。 【解答】数据项,数据元素 【分析】数据结构指的是数据元素以及数据元素之间的关系。 ⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。 【解答】集合,线性结构,树结构,图结构 ⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。 【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系 ⑸算法具有五个特性,分别是()、()、()、()、()。 【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性 ⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。 【解答】自然语言,程序设计语言,流程图,伪代码,伪代码 ⑺在一般情况下,一个算法的时间复杂度是()的函数。 【解答】问题规模 ⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。 【解答】Ο(1),Ο(nlog2n) 【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。 2. 选择题 ⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

相关文档
最新文档