数据结构习题

合集下载

数据结构练习题

数据结构练习题

. . . . .一、单选题第1章绪论1、在数据结构中,从逻辑上可以把数据结构分成A、动态结构和静态结构C、线性结构和非线性结构2、算法分析的两个主要方面是A、空间复杂性和时间复杂性C、可读性和文档性3、数据的不可分割的最小单位是B、紧凑结构和非紧凑结构D、内部结构和外部结构B、正确性和简明性D、数据复杂性和程序复杂性A、结点B、数据元素C、数据项D、数据对象4、在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为A、规则B、集合C、结构D、运算5、与程序运行时间有关的因素主要有以下四方面,其中与算法关系密切的是A、问题的规模C、机器执行速度二、判断题1、数据结构是带有结构的数据元素的集合。

2、程序越短,运行的时间就越少。

3、处理同一问题的算法是唯一的。

B、机器代码质量的优劣D、语句的执行次数4、一个完整算法可以没有输入,但必须有输出。

三、填空题1、______________是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

2、______________结构的数据元素之间存在一对多的关系。

3、数据结构的形式化定义为(D,S),其中D 是______________的有限集,S 是 D 上关系的有限集。

4、数据结构在计算机中的______________称为存储结构。

5、数据元素之间的关系在计算机中有两种不同的表示方法:顺序映象和非顺序映象,由此- 1 -得到两种不同的存储结构是______________存储结构和______________存储结构。

6、一个算法具有五个特性:______________、______________、______________、有零个或多个输入、有一个或多个输出。

7、评价一个算法的好坏应该从算法的正确性、可读性、___________和_________________等几方面进行。

四、解答题1、设n 为正整数。

数据结构习题及标准答案

数据结构习题及标准答案

第一章1.在数据结构中,从逻辑上可以把数据结构分为(C )A.动态结构和静态结构B。

紧凑结构和非紧凑结构C.线性结构和非线性结构D。

内部结构和外部结构● 2.在数据结构中,与所使用的计算机无关的是( A )A。

逻辑结构 B. 存储结构C。

逻辑和存储结构 D. 物理结构3。

下面程序的时间复杂度为____O(mn)_______。

for (int i=1;i〈=m; i++)for (int j=1;j〈=n;j++ )S+=i第二章线性表●链表不具备的特点是(A)A 可以随机访问任一结点(顺序)B 插入删除不需要移动元素C 不必事先估计空间D 所需空间与其长度成正比2。

不带头结点的单链表head为空的判定条件为(A ),带头结点的单链表head为空的判定条件为(B )A head==nullB head—〉next==nullC head-〉next==headD head!=null●3.在线性表的下列存储结构中,读取元素花费时间最少的是(D)A 单链表B 双链表C 循环链表D 顺序表● 4.对于只在表的首、尾两端进行手稿操作的线性表,宜采用的存储结构为(C)A 顺序表B 用头指针表示的单循环链表C 用尾指针表示的单循环链表D 单链表●5。

在一个具有n 个结点的有序单链表中插入一个新的结点,并保持链表元素仍然有序,则操作的时间复杂度为( D )A O(1)B O(log2n)C O(n2)D O(n)● 6.在一个长度为n (n〉1)的单链表上,设有头和尾两个指针,执行(B)操作与链表的长度有关A 删除单链表中第一个元素B 删除单链表中最后一个元素C 在第一个元素之前插入一个新元素D 在最后一个元素之后插入一个新元素●7。

与单链表相比,双向链表的优点之一是(D)A 插入删除操作更简单B 可以进行随机访问C 可以省略表头指针或表尾指针D 顺序访问相邻结点更容易●8。

若list是某带头结点的循环链表的头结点指针,则该链表最后那个链结点的指针域(头结点的地址)中存放的是( B )A list的地址B list的内容C list指的链结点的值D 链表第一个链结点的地址●9.若list1和list2分别为一个单链表与一个双向链表的第一个结点的指针,则( B )A list2比list1占用更多的存储单元B list1与list2占用相同的存储单元C list1和list2应该是相同类型的指针变量D 双向链表比单链表占用更多的存储单元10。

数据结构习题

数据结构习题

一、单项选择题1.下面程序段的时间复杂度为( C ) 。

for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A. O(m2) B. O(n2) C. O(m*n) D. O(m+n) 2.设有一个递归算法如下int fact(int n){串的长度 B.原串的子串 C.串的模式匹配 D.串的连接3.设有一个n×n的对称矩阵A,将其上三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么第i行的对角元素A[i][i]存放于B 中( C )处。

A.(i+3)*i/2 B.(i+1)*i/2 C.(2n-i+1)*i/2 D.(2n-i-1)*i/24.在( C )运算中,使用顺序表比链表好。

5.A.插入B.删除C.根据序号查找 D.根据元素值查找6.带头结点的单链表head为空的判断条件是( C )。

7.A.head= =NULL B.head->next= =NULLC.head->next=head D.head!=NULL8.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( C )最节省时间。

A)单链表 B)循环链单表 C)带尾指针的循环链单表 D)带头结点的双循环链表9.栈的插入与删除操作在(A )进行。

A.栈顶 B.栈底 C.任意位置 D.指定位置10.设一个栈的输入序列为A、B、C、D,则借助一个栈所能得到的输出序列不可能是( D )。

11.A.ABCD B.DCBA C.ACDB D.DABC12.在一个链队中,假设F和R分别是队首和队尾指针,则删除一个结点的运算是( C )。

13.A.R=F->next; B.R=R->next; C.F=F->next; D.F=R->next;14.串是一种特殊的线性表,其特殊性体现在( B )。

15.A.可以顺序存储B.数据元素是一个字符16.C.可以链接存储D.数据元素可以是多个字符17.以下说法正确的是(C )。

数据结构习题及答案

数据结构习题及答案

数据结构习题习题一一、选择题1、数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的(B)和运算的学科。

A.结构B.关系C.运算D.算法2、在数据结构中,从逻辑上可以把数据结构分成(C)。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.逻辑结构和存储结构3、线性表的逻辑顺序和存储顺序总是一致的,这种说法(B)。

A.正确B.不正确C.无法确定D.以上答案都不对4、算法分析的目的是(C)。

A.找出算法的合理性B.研究算法的输人与输出关系C.分析算法的有效性以求改进D.分析算法的易懂性二、填空题1、数据是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,数据是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。

例如,数学中所用到的整数和实数,文本编辑所用到的字符串等。

2、数据元素是数据的基本单位,有些情况下也称为元素、结点、顶点、记录等。

3、数据项是数据不可分割的最小单元,是具有独立含义的最小标识单位。

例如构成一个数据元素的字段、域、属性等都可称之为_数据项。

4、简而言之,数据结构是数据之间的相互关系,即数据的组织形式。

5、数据的逻辑结构是指数据之间的逻辑关系。

逻辑结构是从逻辑关系上描述数据,它与具体存储无关,是独立于计算机的。

因此逻辑结构可以看作是从具体问题抽象出来的数学模型。

6、数据的存储结构指数据元素及其关系在计算机存储器内的表示。

存储结构是逻辑结构在计算机里的实现,也称之为映像。

7、数据的运算是指对数据施加的操作。

它定义在数据的逻辑结构之上,每种逻辑结构都有一个数据的运算。

常用的有:查找、排序、插人、删除、更新等操作。

8、数据逻辑结构可以分为四种基本的类型,集合结构中的元素除了仅仅只是同属于一个集合_,不存在什么关系。

9、数据逻辑结构的四种基本类型中,线性结构_中的元素是一种一对一的关系,这种结构的特征是:若结构是非空集,则有且只有一个开始结点和一个终端结点,并且所有结点最多只能有一个直接前驱和一个直接后继。

数据结构习题及答案

数据结构习题及答案

数据结构习题及答案第1章算法一、选择题1.算法的时间复杂度是指()。

A)执行算法程序所需要的时间B)算法程序中的指令条数C)算法执行过程中所需要的基本运算次数D)算法程序的长度2.算法的空间复杂度是指()。

A)算法程序的长度B)算法程序所占的存储空间C)算法执行过程中所需要的存储空间D)算法程序中的指令条数3.下面()的时间复杂度最好(即执行时间最短)。

logn)O()O(n ) B)A2logn2 ) D)O(n)C)O(n24.下面累加求和程序段的时间复杂度为()。

int sum(int a[],int n){int i, s=0;for (i=0;i<n;i++)< p="">s+=a[i];return s;}logn ) )O(A)O(1 ) B22))O(nC)O(n ) D中的算法,c[][]相加的结果存放到b[][]n阶矩阵5.下面是将两个n阶矩阵a[][]与。

该算法的时间复杂度为()void matrixadd(int a[][],intb[][],c[][],int n){int i,j;for (i=0;i<n;i++)< p="">for(j=0;j<n;j++)< p="">c[i][j]=a[i][j]+b[i][j];}nlog) )O(1 ) B)O(A22) )O(nO( n ) DC)。

6.下面程序段的时间复杂度为() 1int i=0,s1=0,s2=0;while(i<n)< p="">{if(i%2)s1+=i;elses2+=i;i++;}nlog) O(A)O(1 ) B)22) )O(nC)O(n ) D )。

7.下面程序段的时间复杂度为(int prime(int n){int i=1;int x=(int)sqrt(n);while(i<=x){i++;if(n%i==0)break;}if(i>x)return 1;elsereturn 0;}nlog) O(O(1 ) BA))2n) O()CO(n ) D))下面程序段的时间复杂度为(8.int fun(int n){int i=1,s=1;while(s<n)< p="">{i++;s+=i;}return i;}nlog)O(n/2) BA))O(2 2n) )O(C)O(n ) D9.下面程序段的时间复杂度为()int i,j,m,n,a[][];for(i=0;i<m;i++)< p="">for(j=0;j<n;j++)< p="">a[i][j]=i*j;22) )O(nA)O(m) BO(m+n) )C)O(m*n ) D )10. 下面程序段的时间复杂度为(int sum1(int n){int i,p=1,s=0;for(i=1;i<=n;i++){p*=i;s=s+p;}return s;}nlog) )O(A)O(1 ) B22)O(n ) D)O(nC)二、填空题复杂度。

数据结构练习题及答案

数据结构练习题及答案

数据结构练习题(一)一、单选题1.栈和队列的共同特点是( )。

A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.用链接方式存储的队列,在进行插入运算时( )。

A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3.以下数据结构中( )是非线性结构。

A. 队列B. 栈C. 线性表D. 二叉树4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在()位置。

脚注(10)表示用10进制表示。

A.688 B.678 C.692 D.6965.树最适合用来表示( )。

A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据6.二叉树的第k层的结点数最多为( )。

A.2k-1 +1 D. 2k-17.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )。

A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,38.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有()个。

A.1 B.2 C.3 D.49.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。

二、填空题1.通常从四个方面评价算法的质量:_________、_________、_________和_________。

2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。

3.假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数为__________个,树的深度为___________,树的度为_________。

数据结构-习题

数据结构-习题
答:编码:A:00
B:101
C:11
D:100
E:01
4.依次输入以下元素序列:56,78,34,45,85,45,36,91,84,78,试构造一棵二叉排序树。要在这棵二叉排序树中查找55,需要比较多少次?
答:比较4次
5.对于右图,从上到下,从左到右从0开始编号,写出:
(1)图的邻接表;
(2)图的广度优先搜索序列和深度优先搜索序列。
10.有向图的一个顶点的度为该顶点的(C)。
A.入度 B.出度 C.入度与出度之和 D.(入度+出度)/2
11.对于顺序存储的有序表(5,12,26,30,37,42,46,50,64),若采用二分查找,则查找元素30的查找长度为(C)。
A.2 B.3 C.4 D.5
12.在一棵深度为h的具有n个元素的二叉搜索树中,搜索一个元素的最大搜索长度(即经过比较的结点数)为(D)。
3.线性表的链接存储比顺序存储最有利于进行(D)。
A.查找 B.表尾插入或删除 C.按值插入或删除 D.表头插入或删除
4.在一个带头节点的循环双向链表中,若要在指针p所指向的节点之前插入一个q指针所指向的节点,则需要对p→left→right赋值为(A)。
A. q B. p C. p→right D. p→left
三、计算题
1.对于下图,试写出一种拓扑排序序列。
参考答案:ABCHIDGEF
2.已知一棵二叉树的前序和中序遍历序列,求该二叉树的后序遍历序列。
先根序列:F,C,A,D,B,E,G,H,P
中根序列:A,C,B,D,F,E,H,G,P
后根序列:A,B ,D, C,H,P,G,E,F
3.假设电文中出现5个字符A、B、C、D、E,已知它们在电文中出现的频率是5、4、7、2、5,构造出用{5,4,7,2,5}为权值生成的一棵哈夫曼树,并写出这5个字符的哈夫曼编码。

数据结构习题及答案

数据结构习题及答案

第一章概论一、填空题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的 操作对象 以及它们之间的 关系 和运算等的学科。

2. 数据结构被形式地定义为(D, R ),其中D 是 数据元素 的有限集合,R 是D 上的 关系 有限集合。

3. 数据结构包括数据的 逻辑结构 、数据的 存储结构 和数据的 运算 这三个方面的内容。

4. 数据结构按逻辑结构可分为两大类,它们分别是 线性结构 和 非线性结构 。

5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。

6. 在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点 没有后续结点,其余每个结点有且只有1个后续结点。

7. 在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有 后续 结点,其余每个结点的后续结点数可以任意多个 。

8. 在图形结构中,每个结点的前驱结点数和后续结点数可以 任意多个 。

9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序 、 链式 、 索引 和 散列 。

10. 数据的运算最常用的有5种,它们分别是插入 、 删除、修改、 查找 、排序。

11. 一个算法的效率可分为 时间 效率和 空间 效率。

二、单项选择题( B )1. 非线性结构是数据元素之间存在一种:A )一对多关系B )多对多关系C )多对一关系D )一对一关系( C )2. 数据结构中,与所使用的计算机无关的是数据的 结构;A) 存储 B) 物理 C) 逻辑 D) 物理和存储( C )3. 算法分析的目的是:A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性( A )4. 算法分析的两个主要方面是:A) 空间复杂性和时间复杂性 B) 正确性和简明性C) 可读性和文档性 D) 数据复杂性和程序复杂性( C )5. 计算机算法指的是:A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法( B )6. 计算机算法必须具备输入、输出和 等5个特性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》习题集第一章序论思考题:1.1简述下列术语:数据、数据元素、数据对象、数据结构、存储结构、数据类型、抽象数据类型作业题:1.2设有数据结构(D,R),其中D={d1, d2, d3, d4 }R={r1, r2}r1={ <d1, d2>, <d2, d3>, <d3, d4>, <d1, d4>, <d4, d2>, <d4, d1> }r2={ (d1, d2), (d1, d3), (d1, d4), (d2, d4), (d2, d3) }试绘出其逻辑结构示意图。

1.3设n是正整数。

试写出下列程序段中用记号“△”标注的语句的频度:(1) i=1; k=0;while(i<=n-1) {△k+=10*i;i++;}(2) i=1; k=0;do {△k+=10*i;i++;}while(i<=n-1)(3)i=1; k=0;do {△k+ = 10*i; i++;}while(i==n);(4) i=1; j=0;while(i+j≤n) {△if(i<j) i++; else j++;}(5) x=n; y=0; //n是不小于1的常数while(x>=(y+1)*(y+1)){△y++;}(6) x=91; y=100;while ( y>0 ) {△if(x>100) { x-=10; y--; }else x++ ;}(7) for( i=0; i<n; i++)for( j=i; j<n; j++)for( k=j; k<n; k++)△x+=2;1.4 试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值。

1.5 已知k阶斐波那契序列的定义为:f0=0, f1=0,……, f k-2=0, f k-1=1;f n= f n-1+ f n-2+……+ f n-k, n=k,k+1,……试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。

第二章线性表思考题:2.1 描述以下三个概念的区别:头指针、头结点、首元结点。

2.2 描述以下几个概念:顺序存储结构、链式存储结构、顺序表、有序表。

作业题:2.3 已知顺序表La中数据元素按非递减有序排列。

试写一个算法,将元素x插到La的合适位置上,保持该表的有序性。

2.4 已知单链表La中数据元素按非递减有序排列。

按两种不同情况,分别写出算法,将元素x插到La的合适位置上,保持该表的有序性:(1)La带头结点;(2)La不带头结点。

2.5 试写一个算法,实现顺序表的就地逆置,即在原表的存储空间将线性表(a1,a2, ..., an-1,an)逆置为(an,an-1, ..., a2,a1)2.6 试写一个算法,对带头结点的单链表实现就地逆置。

2.7 已知线性表L采用顺序存储结构存放。

对两种不同情况分别写出算法,删除L中值相同的多余元素,使得L中没有重复元素:(1)L中数据元素无序排列;(2)L 中数据元素非递减有序排列。

2.8 将2.7题中L的存储结构改为单链表,写出相应的实现算法。

2.9 设有两个非递减有序的单链表A和B。

请写出算法,将A和B“就地”归并成一个按元素值非递增有序的单链表C。

2.10 设有一个长度大于1的单向循环链表,表中既无头结点,也无头指针,s 为指向表中某个结点的指针,如图2-1所示。

试编写一个算法,删除链表中指针s所指结点的直接前驱。

图2-12.11 已知线性表用带头结点的单链表表示,表中结点由三类字符组成:字母、数字和其他字符。

试编写算法,将该线性链表分割成三个循环单链表,每个循环单链表中均只含有一类字符。

2.12 已知线性表用顺序存储结构表示,表中数据元素为n个正整数。

试写一算法,分离该表中的奇数和偶数,使得所有奇数集中放在左侧,偶数集中放在右侧。

要求:(1)不借助辅助数组;(2)时间复杂度为O(n)。

2.13 设以带头结点的双向循环链表表示的线性表L=(a1,a2,a3,...,a n)。

试写一时间复杂度为O(n)的算法,将L改造为L=(a1,a3,...,a n,...,a4,a2)。

第三章栈和队列思考题:3.1 简述栈和线性表的差别。

3.2 如果进栈序列为A、B、C、D,写出所有可能的出栈序列。

3.3 简述栈和队列的相同点和差异。

3.4 已知栈S中存放了8个数据元素,自栈底至栈顶依次为(1,2,3,4,5,6,7,8)。

(1)写出在执行了函数调用algo1(S)后,S中的元素序列。

(2)在(1)的基础上,又执行了函数调用algo2(S,5),写出此时S中的元素序列。

void algo1(Stack &S){int a[10], i, n=0;while(!StackEmpty(S)){ n++; Pop(S, a[n]); }for(i=1; i<=n; i++) Push(S, a[i]);}void algo2(Stack &S, int e){Stack T;int d;InitStack(T);while(!EmptyStack(S)){Pop(S,d);if(d!=e) Push(T,d);}while(!StackEmpty(T)){Pop(T,d);Push(S,d);}}3.5已知队列Q中自队头至队尾依次存放着(1,2,3,4,5,6,7,8)。

写出在执行了函数调用algo3(Q)后,Q中的元素序列。

void algo3(Queue &Q){Stack S;int d;InitStack(S);while(!QueueEmpty(Q)){DeQueue(Q,d); Push(S,d);}while(!StackEmpty(S)){Pop(S,d); EnQueue(Q,d);}}作业题:3.6 试写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如“序列1&序列2”模式的字符序列。

其中,序列1和序列2中都不包含字符‘&’,且序列2是序列1的逆序。

例如,“a+b&b+a”是属于该模式的字符序列,而“1+3&3-1”则不是。

3.7 假设一个算术表达式中可以包含三种符号:圆括号“(”和“)”、方括号“[”和“]”、花括号“{”和“}”,且这三种括号可按任意次序嵌套使用。

编写判别给定表达式中所含的括号是否正确配对的算法(已知表达式已存入数据元素为字符的顺序表中)。

3.8 设表达式由单字母变量、双目运算符和圆括号组成(如:“(a*(b+c)-d)/e)”。

试写一个算法,将一个书写正确的表达式转换为逆波兰式。

3.9 试用类C写一个算法,对逆波兰式求值。

3.10 假设以带头结点的单循环链表表示队列,只设一个尾指针指向队尾元素,不设头指针。

试编写相应的队列初始化、入队和出队的算法。

3.11 假设将循环队列定义为:以rear和length分别指示队尾元素和队列长度。

试给出此循环队列的队满条件,并写出相应的入队和出队算法(在出队算法中要传递回队头元素的值)。

3.12 试写一个算法:判别读入的一个以‘@’为结束符的字符序列是否是“回文”(所谓“回文”是指正读和反读都相同的字符序列,如“xxyzyxx”是回文,而“abcab”则不是回文)。

第五章 多维数组5.1 已知多维数组A[2][2][3][3]按行优先方式存储。

试按存储位置的先后次序,列出所有数组元素A[i][j][k][l]序列(为了简化表达,可以只列出形如“i,j,k,l”的序列,如元素A[0][0][2][1]可表示为“0,0,2,1” )。

5.2 假设有一个二维数组A[0..5][0..7],每个元素占6个字节,首元素A[0][0]的地址为1000,求: (1)A 的体积;(2)最后一个元素A[5][7]的地址; (3)按行主序方式存储时,A[2][4]的地址; (4)按列主序方式存储时,A[2][4]的地址; 5.3 设有上三角矩阵An ×n ,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡nn n n n a Ca a a a a a a a a (3332232211312)11将其上三角的元素逐行存于数组B[0..m-1]中(m 充分大),使得B[k]=a ij 且k =f 1(i)+f 2(j)+c 。

试推导出函数f 1、f 2和常数c (要求f 1和f 2中不含常数项)。

5.4 设有一个准对角矩阵⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----m m m m m m m m a a a a a a a a a a a a 2,212,22,1212,124443343322211211............ 按以下方式存于一维数组B[4m]中:123456k4m-24m-1写出由一对下标(i,j)求k 的转换公式。

5.5 已知稀疏矩阵A 4×5如下:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=70040000000603250010A (1)用三元组表作为存储结构,绘出相应的三元组表示意图; (2)用十字链表作为存储结构,绘出相应的十字链表示意图。

5.6 设稀疏矩阵A 和B 均以三元组顺序表作为存储结构。

试写出计算矩阵相加C =A +B 的算法,其中,C 是另设的、存放结果的三元组表(提示:可用类似于两个有序顺序表归并的处理方法)。

5.7 试编写一个算法,实现以三元组的形式打印用十字链表表示的稀疏矩阵中所有非零元素及其下标。

5.8 试编写一个算法,实现以矩形阵列的形式打印用十字链表表示的稀疏矩阵。

第六章 树和二叉树6.1 试分别绘出具有3个结点的树和3个结点的二叉树的所有不同形态。

6.2 设结点X 是二叉树上一个度为1的结点,X 有几个子树? 6.3 描述满足下列条件的二叉树形态:(1) 先序遍历序列与中序遍历序列相同; (2) 后序遍历序列与中序遍历序列相同; (3) 先序遍历序列与后序遍历序列相同;6.4 一个深度为H 的满k 叉树有如下性质:第H 层上所有结点都是叶子结点,其余各层上每个结点都有k 棵非空子树。

如果从1开始按自上而下、自左向右的次序对全部结点编号,问:(1) 各层的结点数目是多少?(2) 编号为i 的结点的父结点(若存在)的编号是多少?(3) 编号为i的结点的第j个孩子(若存在)的编号是多少?(4) 编号为i的结点有右兄弟的条件是什么?其右兄弟的编号是多少?6.5 已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,...,nk个度为k的结点,问该树中有多少个叶子结点?6.6 已知在一棵含有n个结点的树中,只有度为k的分支结点和度为0的叶子结点。

相关文档
最新文档