数据结构1--3章
数据结构第1-3章作业参考答案(严薇敏,吴伟民编著)

操作结果 构造一个有理数 R,元素 r1, r2 分 被赋 参数 v1, v2 的值 DestroyRational (&R) 初始条件 有理数 R 已存在 操作结果 销毁有理数 R Get(R, k, &e) 初始条件 有理数 R 已存在,1 k 2 操作结果 用 e 返回有理数 R 的第 k 元的值 Put(&R, k, e) 初始条件 有理数 R 已存在,1 k 2,若 k=2,则 e≠0 操作结果 用 e 更新有理数 R 的第 k 元的值 IsAscending(R) 初始条件 有理数 R 已存在 操作结果 若有理数 R 的两个元素按升序排列,则返回 1,否则返回 0 IsDescending(R) 初始条件 有理数 R 已存在 操作结果 若有理数 R 的两个元素按降序排列,则返回 1,否则返回 0 Max(R, &e) 初始条件 有理数 R 已存在 操作结果 用 e 返回有理数 R 的两个元素中值较大的一个 Min(R, &e) 初始条件 有理数 R 已存在 操作结果 用 e 返回有理数 R 的两个元素中值较小的一个 }ADT Rational
}//Descending
//使 x y //使 temp>z
算法二如 ( 算法是冒泡排序算法)
void Descending(){ scanf(x, y, z);
if(x<y) x ↔ y ; if(y<z) y ↔ z ; if(x<y) x ↔ y ;
printf(x, y, z); }//Descending
第 2 页 共 12 页
操作结果 求有理数 R1 的绝对值,用有理数 R 返回 NegativeRational(&R, R1) 初始条件 有理数 R1 已存在 操作结果 求有理数 R1 的相 数,用有理数 R 返回 }ADT Rational
数据结构习题1-3及其答案

1.设n为正整数,利用大"O"记号,将下列程序段的执行时间表示为n的函数。
(1) i=1; k=0;while(i<n){ k=k+10*i;i++;}(2) i=1; j=0;while(i+j<=n){if (i>j) j++;else i++;}(3)x=n; // n>1while (x>=(y+1)*(y+1))y++;第二章线性表2.1下述算法的功能是什么?LinkList Demo(LinkList L){ // L是无头结点单链表ListNode *Q,*P;if(L&&L->next){Q=L;L=L->next;P=L;while (P->next) P=P->next;P->next=Q; Q->next=NULL;}return L;}// Demo答:该算法的功能是:将开始结点摘下链接到终端结点之后成为新的终端结点,而原来的第二个结点成为新的开始结点,返回新链表的头指针。
2.9设顺序表L是一个递增有序表,试写一算法,将x插入L中,并使L仍是一个有序表。
答:因已知顺序表L是递增有序表,所以只要从顺序表终端结点(设为i位置元素)开始向前寻找到第一个小于或等于x的元素位置i后插入该位置即可。
在寻找过程中,由于大于x的元素都应放在x之后,所以可边寻找,边后移元素,当找到第一个小于或等于x的元素位置i时,该位置也空出来了。
算法如下://顺序表存储结构如题2.7void InsertIncreaseList( Seqlist *L , Datatype x ){int i;if ( L->length>=ListSize)Error(“overflow");for ( i=L -> length ; i>0 && L->data[ i-1 ] > x ; i--)L->data[ i ]=L->data[ i ] ; //比较并移动元素L->data[ i ] =x;L -> length++;}2.14已知单链表L是一个递增有序表,试写一高效算法,删除表中值大于min且小于max的结点(若表中有这样的结点),同时释放被删结点的空间,这里min和max是两个给定的参数。
《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)

《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)【第一章绪论】1. 数据结构是计算机科学中的重要基础知识,它研究的是如何组织和存储数据,以及如何通过高效的算法进行数据的操作和处理。
本章主要介绍了数据结构的基本概念和发展历程。
【第二章线性表】1. 线性表是由一组数据元素组成的数据结构,它的特点是元素之间存在着一对一的线性关系。
本章主要介绍了线性表的顺序存储结构和链式存储结构,以及它们的操作和应用。
【第三章栈与队列】1. 栈是一种特殊的线性表,它的特点是只能在表的一端进行插入和删除操作。
本章主要介绍了栈的顺序存储结构和链式存储结构,以及栈的应用场景。
2. 队列也是一种特殊的线性表,它的特点是只能在表的一端进行插入操作,而在另一端进行删除操作。
本章主要介绍了队列的顺序存储结构和链式存储结构,以及队列的应用场景。
【第四章串】1. 串是由零个或多个字符组成的有限序列,它是一种线性表的特例。
本章主要介绍了串的存储结构和基本操作,以及串的模式匹配算法。
【第五章数组与广义表】1. 数组是一种线性表的顺序存储结构,它的特点是所有元素都具有相同数据类型。
本章主要介绍了一维数组和多维数组的存储结构和基本操作,以及广义表的概念和表示方法。
【第六章树与二叉树】1. 树是一种非线性的数据结构,它的特点是一个节点可以有多个子节点。
本章主要介绍了树的基本概念和属性,以及树的存储结构和遍历算法。
2. 二叉树是一种特殊的树,它的每个节点最多只有两个子节点。
本章主要介绍了二叉树的存储结构和遍历算法,以及一些特殊的二叉树。
【第七章图】1. 图是一种非线性的数据结构,它由顶点集合和边集合组成。
本章主要介绍了图的基本概念和属性,以及图的存储结构和遍历算法。
【总结】1. 数据结构是计算机科学中非常重要的一门基础课程,它关注的是如何高效地组织和存储数据,以及如何通过算法进行数据的操作和处理。
本文对《数据结构》第二版严蔚敏的课后习题作业提供了参考答案,涵盖了第1-7章的内容。
数据结构1-3章习题答案2013

while(p->next!=NULL)
p=p->next;
temp=p->data;
delete p;
return temp;
}
4、数据结构简单地说是指数据以及相互之间的联系。
5、算法应具备以下5个特性:有穷性、正确性、可行性、输入和输出。
6、在分析各种算法的时间复杂度时,一般只讨论相应的数量级,用f(素的个数远远少于零元素的个数。
8、的运算规则为后进先出,队列的运算规则为先进先出。
C.(rear+1) %n= =frontD. (rear-1)%n= = front
5、下列是顺序存储线性表排序的算法
void Sort(List& L)
{
int i,j;
ElemType x;
for(i=1;i<L.size;i++)
{
x=L.list[i];
for(j=i-1;j>=0;j--)
}
不考虑健壮性条件,写出下列出队算法中缺失的语句:
ElemType OutQueue(struct QueueSq* Q)
{…
Q->front=(Q->front+1)%Q->MaxSize;
return Q->queue[Q->front];
…
}
参考以上两算法和数据结构,写出队满的条件:
(Q->rear+1)%Q->MaxSize==Q->front
和队空的条件:
Q->front==Q->rear
六、用f(n)=2n为例,说明栈与递归算法之间的关系。
数据结构1-3章习题

一、选择题1、在数据结构中。
与所使用的计算机无关的是(D )。
A、存储结构B、物理结构C、物理和存储结构D、逻辑结构2、非线性结构中每个结点(D)。
A、无直接前驱结点B、只有一个直接前驱和直接后继结点C、无直接后继结点D、可能有多个直接前驱和多个直接后继结点3、可以把数据的逻辑结构划分成(D )。
A、内部结构和外部结构B、动态结构和静态结构C、紧凑结构和非紧凑结构D、线性结构和非线性结构4、算法指的是(D )。
A、计算机程序B、解决问题的计算方法C、排序算法D、解决问题的有限运算序列5、在决定选取何种存储结构时,一般不考虑(A )。
A、各结点的值如何B、结点个数的多少C、对数据有哪些运算D、所用编程语言实现这种结构是否方便6、在存储数据时,通常不仅要存储各数据元素的值,而且还要存储(C )。
A、数据的处理方法B、数据元素的类型C、数据元素之间的关系D、数据的存储方法7、通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着( B )。
A、数据元素具有同一特点B、不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致C、每个数据元素都一样D、数据元素所包含的数据项的个数要相等8、以下说法正确的是(A )。
A、数据元素是数据的基本单位B、数据项是数据的基本单位C、数据结构是带结构的数据项的集合D、一些表面上很不相同的数据可以有相同的逻辑结构二、简答题:下面是几种数据的逻辑结构)S=,分别画出对应的数据D(R,逻辑结构,并指出它们分别属于何种结构。
defcD==Rba}{r},,{,,,=fed<d<>>ba<racbbd,,,,,>,,},><(><){,=fee>d<><bb<racbdc,,,,,>},,<>,)(>{,<=fde<<d><>rba>cbcdadb,,,,,,},,,,><><(>,{)<一、选择题1、下面关于线性表的叙述中,错误的是(D )。
《算法与数据结构》第1~3章 习题(包含了线性表、栈和队列,含答案)

{ p=p1; p1=p1->next; p->next= pa->next; pa->next= p; p2= p2->next;s1=s1+1;};
的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是(C)。
A. 6 B. 4 C. 3 D. 2
13.若用一个大小为6的数组来实现循环队列,且当前rear和
front的值分别为0和3,当从队列中删除一个元素,再加入两个
元素后,rear和front的值分别为多少?(B)
A. 1和 5 B. 2和4 C. 4和2 D. 5和1
10. 表达式3* 2^(4+2*2-6*3)-5求值过程中当扫描到6时,对
象栈和算符栈为( D ),其中^为乘幂 。
• 3,2,4,1,1;*^(+*- B. 3,2,8;*^- C. 3,2,4,2,2;*^(-
D. 3,2,8;*^(-
算法与数据结构
第1~3章 习题课
5 /31
11.循环队列存储在数组A[0..m]中,则入队时的操作为(D)。
C. q->next=p;q->pre=p->pre;p->pre->next=q;p->pre=q;
D. q->pre=p->pre;q->next=q;p->pre=q;p->pre=q; 5.栈的特点是( B ),队列的特点是( A ),栈和队列都是 ( A )。若进栈序列为1,2,3,4 则( C )不可能是一个出栈序 列(不一定全部进栈后再出栈);若进队列的序列为1,2,3,4 则 ( E )是一个出队列序列。 ①, ②: A. 先进先出 B. 后进先出 C. 进优于出 D. 出 优于进
数据结构1-3习题

第1章绪论1.1选择题1. 算法的时间复杂度取决于()A)问题的规模B)待处理数据的初态C)A和B2.计算机算法指的是解决问题的步骤序列,它必须具备()这三个特性。
A)可执行性可移植性可扩充性B)可执行性、确定性、有穷性C)确定性、有穷性、稳定性D)易读性、稳定性、安全性5.从逻辑上可以把数据结构分为()两大类。
A)动态结构、静态结构B)顺序结构、链式结构C)线性结构、非线性结构D)初等结构、构造型结构6.在下面的程序段中,对x的赋值的语句频度为()for(i=0;i<n;i++)for(j=0;j<n;j++) x=x+1;A)O(2n) B)O(n) C.O(n2) D.O(log2n)7.下面的程序段中,n为正整数,则最后一行的语句频度在最坏情况下是()for(i=n-1;i>=1;i--)for(j=1;j<=i;j++)if (A[j]>A[j+1])A[j]与A[j+1]对换;A. O(n)B)O(nlog2n) C)O(n3) D)O(n2)1.2填空题2. 对于给定的n个元素,可以构造出的逻辑结构有_____________,_____________,_____________,_____________四种。
4.数据结构中评价算法的两个重要指标是_____________。
5. 数据结构是研讨数据的_____________和_____________,以及它们之间的相互关系,并对与这种结构定义相应的_____________,设计出相应的_____________。
6.一个算法具有5个特性:_____________、_____________、_____________,有零个或多个输入、有一个或多个输出。
9.已知如下程序段for(i=n;i>0;i--) {语句1}{ x=x+1; {语句2}for(j=n;j>=i;j--) {语句3}y=y+1; {语句4}}语句1执行的频度为_____________;语句2执行的频度为_____________;语句3执行的频度为_____________;语句4执行的频度为_____________。
数据结构第一章--绪论(严蔚敏版)

解 T = (D, R ) D={A,B,a,b,c }
R是D上的关系的集合 是 上的关系的集合
A
B
a R={ P1,P2 } P1 ={<A,a>, <A,b>, <A,c>} P2 ={<B,a>, <B,b>, <B,c>}
b
c
写出一个复数的数据结构 例3 写出一个复数的数据结构 Complex= (C , R) 解 一个复数可以表示为 a+bi 一个复数可以表示为 复数 C={a,b}
也可以表示成一个有序对 <a, b>
∴这里存在一种关系 P ={<a,b>} (只有一个有序对 只有一个有序对) 只有一个有序对
而R是C上的关系的集合 R={ P } 是 上的关系的集合
写出一个复数的数据结构 例3 写出一个复数的数据结构 Complex= (C , R) 解 一个复数的数据结构为 Complex= (C , R) 其中, 其中, C={a,b} R={ P } P ={<a,b>}
a b c
解 其数据结构可描述为 d e T = (D, R ) D是数据元素的集合 D={a,b,c,d,e} 是数据元素的集合
R是D上的关系的集合 R={ P } 是 上的关系的集合
P ={<a,b>,<a,c>,<b,d>,<b,e>}
例2
一小组有a,b,c 三个学生,一个导师A 一小组有a,b,c 三个学生,一个导师A 和一个辅导员B 和一个辅导员B,此小组的数据结构如图:
48
ADT 抽象数据类型名 { 数据对象: 数据对象:〈数据对象的定义〉 数据关系: 数据关系:〈数据关系的定义〉 基本操作: 基本操作:〈基本操作的定义〉 } ADT 抽象数据类型名 其中基本操作的定义格式为: 基本操作名(参数表) 基本操作名 初始条件:〈初始条件描述〉 初始条件: 操作结果:〈操作结果描述〉 操作结果
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章绪论一、选择题1. 算法的计算量的大小称为计算的()。
2. 算法的时间复杂度取决于()3.计算机算法指的是(),它必须具备()这三个特性。
4.一个算法应该是()。
5. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是()(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。
A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。
A.循环队列 B. 链表 C. 哈希表 D. 栈9.以下数据结构中,哪一个是线性结构()?A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关?()A.栈 B. 哈希表 C. 线索树 D. 双向链表11.在下面的程序段中,对x的赋值语句的频度为()FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A. O(2n) B.O(n) C.O(n2) D.O(log2n) 12.程序段 FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中 n为正整数,则最后一行的语句频度在最坏情况下是()A. O(n)B. O(nlogn)C. O(n3)D. O(n2)13.以下哪个数据结构不是多型数据类型()A.栈 B.广义表 C.有向图 D.字符串14.以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队 D.栈15. 下列数据中,()是非线性数据结构。
A.栈 B. 队列 C. 完全二叉树 D. 堆16.连续存储设计时,存储单元的地址()。
A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续17.以下属于逻辑结构的是()。
A.顺序表 B. 哈希表 C.有序表 D. 单链表二、判断题1. 数据元素是数据的最小单位。
( )2. 记录是数据处理的最小单位。
( )3. 数据的逻辑结构是指数据的各数据项之间的逻辑关系;( )4.算法的优劣与算法描述语言无关,但与所用计算机有关。
( )5.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。
( )6.算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。
( )7.程序一定是算法。
( )8.数据的物理结构是指数据在计算机内的实际存储形式。
( )9. 数据结构的抽象操作的定义与具体实现有关。
( )10. 在顺序存储结构中,有时也存储数据结构中元素之间的关系。
( )11. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
( )12. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。
( )13. 数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构. ( )三、填空1.数据的物理结构包括的表示和的表示。
2. 对于给定的n个元素,可以构造出的逻辑结构有(1),(2),(3),__(4)_四种。
3.数据的逻辑结构是指。
4.一个数据结构在计算机中称为存储结构。
5.抽象数据类型的定义仅取决于它的一组__(1)_,而与_(2)_无关,即不论其内部结构如何变化,只要它的_(3)_不变,都不影响其外部使用。
6.数据结构中评价算法的两个重要指标是7. 数据结构是研讨数据的_(1)_和_(2)_,以及它们之间的相互关系,并对与这种结构定义相应的_(3)_,设计出相应的(4)_。
8.一个算法具有5个特性: (1)、(2)、(3),有零个或多个输入、有一个或多个输出。
9.已知如下程序段FOR i:= n DOWNTO 1 DO {语句1}BEGINx:=x+1; {语句2}FOR j:=n DOWNTO i DO {语句3}y:=y+1; {语句4}END;语句1执行的频度为(1);语句2执行的频度为(2);语句3执行的频度为(3);语句4执行的频度为(4)。
10.在下面的程序段中,对x的赋值语句的频度为______(表示为n的函数)FOR i:=1 TO n DOFOR j:=1TO i DOFOR k:=1 TO j DOx:=x+delta;11.下面程序段中带下划线的语句的执行次数的数量级是:i:=1; WHILE i<n DO i:=i*2;12. 下面程序段中带下划线的语句的执行次数的数量级是( )。
i:=1;WHILE i<n BEGIN FOR j:=1 TO n DO x:=x+1;i:=i*2 END;13. 下面程序段中带有下划线的语句的执行次数的数量级是( )i:=n*n WHILE i<>1 DO i:=i div 2;14. 计算机执行下面的语句时,语句s的执行次数为 _______ 。
FOR(i=l;i<n-l;i++)FOR(j=n;j>=i;j--)s;15. 下面程序段的时间复杂度为________。
(n>1)sum=1;for (i=0;sum<n;i++) sum+=1;16.设m.n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。
例f(5,3)=5,有5种表示方式:3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。
①以下是该函数的程序段,请将未完成的部分填入,使之完整int f(m,n)int m,n;{ if(m==1)return (1) ;if(n==1){return (2) ;}if(m<n){return f(m,m);}if (m==n){return 1+ (3) ;}return f(m.n-1)+f(m-n, (4) );}②执行程序,f(6,4)= 。
17. 在有n个选手参加的单循环赛中,总共将进行______场比赛。
四、应用题1. 数据结构是一门研究什么内容的学科?2. 数据元素之间的关系在计算机中有几种表示方法?各有什么特点?3. 数据类型和抽象数据类型是如何定义的。
二者有何相同和不同之处,抽象数据类型的主要特点是什么?使用抽象数据类型的主要好处是什么?4. 回答问题(每题2分)(1)在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系?(2)若逻辑结构相同但存储结构不同,则为不同的数据结构。
这样的说法对吗?举例说明之。
(3)在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。
这样说法对吗?举例说明之。
(4)评价各种不同数据结构的标准是什么?5.评价一个好的算法,您是从哪几方面来考虑的?6.解释和比较以下各组概念(1)抽象数据类型及数据类型(2)数据结构、逻辑结构、存储结构(3)抽象数据类型(4)算法的时间复杂性(5)算法(6)频度7. 根据数据元素之间的逻辑关系,一般有哪几类基本的数据结构?8.对于一个数据结构,一般包括哪三个方面的讨论?9. 当你为解决某一问题而选择数据结构时,应从哪些方面考虑?10. 若将数据结构定义为一个二元组(D,R),说明符号D,R 应分别表示什么?11.数据结构与数据类型有什么区别?12.数据的存储结构由哪四种基本的存储方法实现?13.若有100个学生,每个学生有学号,姓名,平均成绩,采用什么样的数据结构最方便,写出这些结构?14. 运算是数据结构的一个重要方面。
试举一例,说明两个数据结构的逻辑结构和存储方式完全相同,只是对于运算的定义不同。
因而两个结构具有显著不同的特性,是两个不同的结构。
15. 在编制管理通讯录的程序时, 什么样的数据结构合适? 为什么? 16. 试举一例,说明对相同的逻辑结构,同一种运算在不同的存储方式下实现,其运算效率不同。
17. 有实现同一功能的两个算法A1和A2,其中A1的时间复杂度为Tl=O(2n),A2的时间复杂度为T2=O(n2),仅就时间复杂度而言,请具体分析这两个算法哪一个好。
18.设计一数据结构,用来表示某一银行储户的基本信息:账号、姓名、开户年月日、储蓄类型、存入累加数、利息、帐面总数。
19. 写出下面算法中带标号语句的频度。
TYPE ar=ARRAY[1..n] OF datatype;PROCEDURE perm ( a: ar; k, n: integer);VAR x: datatype; i:integer;BEGIN(1)IF k=nTHEN BEGIN(2)FOR i:=1 TO n DO(3)write (a[i]);writeln;ENDELSE BEGIN(4) FOR i:=k TO n DO(5)a[i]:=a[i]+i*i;(6) perm (a, k+1, n);END;END;设k的初值等于1。
20. 分析下面程序段中循环语句的执行次数。
i:=0;s:=0;n:=100;REPEATi:=i+1;s:=s+10*i;UNTIL NOT((i<n) AND (s<n));21.下列算法对一n位二进制数加1,假如无溢出,该算法的最坏时间复杂性是什么?并分析它的平均时间复杂性。
TYPE num=ARRAY [1..n] of [0..1];PROCEDURE Inc (VAR a:num);VAR i:integer;BEGIN i:=n;WHILE A[i]=1 DOBEGIN A[i]:=0; i:=i-1;END;END;A[i]:=1;END Inc;22. 阅读下列算法,指出算法A的功能和时间复杂性PROCEDURE A (h,g:pointer);(h,g分别为单循环链表(single linked circular list)中两个结点指针) PROCEDURE B(s,q:pointer);VAR p:pointer;BEGINp:=s;WHILE p^.next<>q DO p:=p^.next;p^.next:=s;END;(of B)BEGINB(h,g); B(g,h);END;(of A)23. 调用下列C函数f(n)或PASACAL函数f(n) 回答下列问题 :(1)试指出f(n)值的大小,并写出f(n) 值的推导过程;(2)假定n= 5,试指出f(5)值的大小和执行f(5)时的输出结果。