最完整的数据结构1800题含答案 联系客服

发布时间 : 星期一 文章最完整的数据结构1800题含答案更新完毕开始阅读

线性结构,采用顺序存储结构为顺序表,而采用链式存储结构称为线性链表。 (3)栈和队列的逻辑结构相同,其存储表示也可相同(顺序存储和链式存储),但由于其运算集合不同而成为不同的数据结构。

(4)数据结构的评价非常复杂,可以考虑两个方面,一是所选数据结构是否准确、完整的刻划了问题的基本特征;二是是否容易实现(如对数据分解是否恰当;逻辑结构的选择是否适合于运算的功能,是否有利于运算的实现;基本运算的选择是否恰当。)

5.评价好的算法有四个方面。一是算法的正确性;二是算法的易读性;三是算法的健壮性;四是算法的时空效率(运行)。

6.(1)见上面题3 (2)见上面题4 (3)见上面题3

(4)算法的时间复杂性是算法输入规模的函数。算法的输入规模或问题的规模是作为该算法输入的数据所含数据元素的数目,或与此数目有关的其它参数。有时考虑算法在最坏情况下的时间复杂度或平均时间复杂度。

(5)算法是对特定问题求解步骤的描述,是指令的有限序列,其中每一条指令表示一个或多个操作。算法具有五个重要特性:有穷性、确定性、可行性、输入和输出。

(6)频度。在分析算法时间复杂度时,有时需要估算基本操作的原操作,它是执行次数最多的一个操作,该操作重复执行的次数称为频度。

7.集合、线性结构、树形结构、图形或网状结构。 8.逻辑结构、存储结构、操作(运算)。

9.通常考虑算法所需要的存储空间量和算法所需要的时间量。后者又涉及到四方面:程序运行时所需输入的数据总量,对源程序进行编译所需时间,计算机执行每条指令所需时间和程序中指令重复执行的次数。

10.D是数据元素的有限集合,S是D上数据元素之间关系的有限集合。 11.“数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。

12.见上面题2。

13.将学号、姓名、平均成绩看成一个记录(元素,含三个数据项),将100个这样的记录存于数组中。因一般无增删操作,故宜采用顺序存储。 typedef struct {int num;//学号

char name[8];//姓名 float score;/平均成绩 }node;

node student[100];

14. 见上面题4(3)。

15.应从两方面进行讨论:如通讯录较少变动(如城市私人电话号码),主要用于查询,以顺序存储较方便,既能顺序查找也可随机查找;若通讯录经常有增删操作,用链式存储结构较为合适,将每个人的情况作为一个元素(即一个结点存放一个人),设姓名作关键字,链表安排成有序表,这样可提高查询速度。

16.线性表中的插入、删除操作,在顺序存储方式下平均移动近一半的元素,时间复杂度为O(n);而在链式存储方式下,插入和删除时间复杂度都是O(1)。

2n

17.对算法A1和A2的时间复杂度T1和T2取对数,得nlog和2log。显然,算法A2好于A1。

18. struct node

{int year,month,day; }; typedef struct {int num;//帐号

char name[8];//姓名

struct node date;//开户年月日

int tag;//储蓄类型,如:0- 零存,1- 一年定期?? float put;//存入累加数; float interest;//利息 float total;//帐面总数 }count;

19.(1)n (2)n+1 (3)n (4)(n+4)(n-1)/2 (5)(n+2)(n-1)/2 (6)n-1

这是一个递归调用,因k的初值为1,由语句(6)知,每次调用k增1,故第(1)语句执行n次。(2)是FOR循环语句,在满足(1)的条件下执行,该语句进入循环体(3)n次,加上最后一次判断出界,故执行了n+1次。(4)也是循环语句,当k=1时判断n+1次(进入循环体(5)n次),k=2时判断n次,最后一次k=n-1时判断3次,故执行次数是(n+1)+n+?+3=(n+4)(n-1)/2次。语句(5)是(4)的循环体,每次比(4)少一次判断,故执行次数是n+(n-1)+?+2=(n+2)(n-1)/2次。注意分析时,不要把(2)分析成n次,更不是1次。

20.4 (这时i=4, s=100) REPEAT语句先执行循环体,后判断条件,直到条件为真时退出循环。

21.算法在最好情况下,即二进制数的最后一位为零时,只作一次判断,未执行循环体,赋值语句A[i]执行了一次;最坏情况出现在二进制数各位均为1(最高位为零,因题目假设无溢出),这时循环体执行了n-1次,时间复杂度是O(n),循环体平均执行n/2次,时间复杂度仍是O(n)。

22.该算法功能是将原单循环链表分解成两个单循环链表:其一包括结点h到结点g的前驱结点;另一个包括结点g到结点h的前驱结点。时间复杂度是O(n)。

23.第一层FOR循环判断n+1次,往下执行n次,第二层FOR执行次数为(n+(n-1)+(n-2)+?+1),第三层循环体受第一层循环和第二层循环的控制,其执行次数如下表:

i= 1 2 3 ? n j=n n n n ? n j=n-1 n-1 n-1 n-1 ? ? ? ? ?

j=3 3 3 j=2 2 2 j=1 1

2

执行次数为(1+2+?+n)+(2+3+?+n)+?+n=n*n(n+1)/2-n(n-1)/6。在n=5时,f(5)=55,执行过程中,输出结果为:sum=15,sum=29,sum=41,sum=50,sum=55(每个sum= 占一行,为节省篇幅,这里省去换行)。

n2(n?2i?1)??24 24.O(n),m的值等于赋值语句m:=m+1的运行次数,其计算式为i?1n/225.(1)O(1) (2)O(n) (3)O(n) 26.(1)O(n) (2)O(n)

27.(1)由斐波那契数列的定义可得:

232

Fn=Fn-1+Fn-2 =2Fn-2+Fn-3 =3Fn-3+2Fn-4 =5Fn-4+3Fn-5 =8Fn-5+5Fn-6 …… =pF1+qF0

设Fm的执行次数为Bm(m=0、1、2、?、n-1),由以上等式可知,Fn-1被执行一次,即Bn-1=1;Fn-2被执行两次,即Bn-2=2;直至F1被执行p次、F0被执行q次,即B1=p,B0=q。Bm的执行次数为前两等式第一因式系数之和,即Bm=Bm-1+Bm-2,再有Bn-1=1和Bn-2=2,这也是一个斐波那契数列。可以解得:

1?551?5n-m+2n-m+2

Bm=5[(2)-(2)] (m=0,1,2,?,n-1)

(2)时间复杂度为O(n)

1/22335n/2n

28.从小到大排列为:logn, n+logn, n, nlogn, n+logn,n, n-n+7n, 2, (3/2),

?2n???n???? n!,

第2章 线性表

一 选择题

1.下述哪一条是顺序存储结构的优点?( )【北方交通大学 2001 一、4(2分)】 A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示

2.下面关于线性表的叙述中,错误的是哪一个?( )【北方交通大学 2001 一、14(2分)】

A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 3.线性表是具有n个( )的有限序列(n>0)。 【清华大学 1998 一、4(2分)】 A.表元素 B.字符 C.数据元素 D.数据项 E.信息项 4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。【哈尔滨工业大学 2001 二、1(2分)】

A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表 5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。【南开大学 2000 一、3】

A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表

6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。

A. 单链表 B.单循环链表 C. 带尾指针的单循环链表 D.带头结点的双循环链表

【合肥工业大学 2000 一、1(2分)】

7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用( )存储方式最节省运算时间。【北京理工大学 2000 一、1(2分)】

A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表 8. 静态链表中指针表示的是( ). 【北京理工大学 2001 六、2(2分)】 A. 内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址 9. 链表不具有的特点是( ) 【福州大学 1998 一、8 (2分)】 A.插入、删除不需要移动元素 B.可随机访问任一元素 C.不必事先估计存储空间 D.所需空间与线性长度成正比 10. 下面的叙述不正确的是( )【南京理工大学 1996 一、10(2分)】 A.线性表在链式存储时,查找第i个元素的时间同i的值成正比 B. 线性表在链式存储时,查找第i个元素的时间同i的值无关

C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比 D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关

11. 线性表的表元存储方式有((1))和链接两种。试指出下列各表中使用的是何种存储方式:表1是((2))存储方式;表2是((3))存储方式;表3是((4))存储方式;表

4是((5))存储方式。表左的s指向起始表元。

表1 表元编号 货号 数量 表元间联系 s→ 1 618 40 2 2 3 4 5 6 表元编号 1 2 3 4 5 6 表元编号 1 2 3 4 5 6 表元编号 205 103 501 781 910 货号 618 205 103 501 781 910 货号 618 205 103 501 781 910 货号 2 15 20 17 24 数量 40 2 15 20 17 24 数量 40 2 15 20 17 24 数量 3 4 5 6 0 表元间联系 5 1 4 2 6 3 表元间联系 5 1 4 0 6 3 表元间联系 1 2

s→

表3

s→

表2