数据结构习题集与实验指导

目录

基础练习题及答案…………………………………………………………………1 第一章 绪论………………………………………………………………………1 第二章 线性表……………………………………………………………………3 第三章 栈和队列…………………………………………………………………7 第四-五章 串和数组………………………………………………………………12 第六章 树和二叉树………………………………………………………………..16 第七章 图…………………………………………………………………………..24 第八章 查找………………………………………………………………………..30 第九章 排序………………………………………………………………………..33 数据结构实验指导…………………………………………………………………34 实验一 线性表的应用……………………………………………………………..34 实验二 栈和队列的应用…………………………………………………………..39 实验三 串的应用…………………………………………………………………..47 实验四 数组………………………………………………………………………..48 实验五 二叉树的应用……………………………………………………………..51 实验六 图的应用…………………………………………………………………..55 实验七 查找………………………………………………………………………..56 实验八 排序………………………………………………………………………..61 配套题集算法答案…………………………………………………………………64 第一章 绪论………………………………………………………………………..64 第二章 线性表……………………………………………………………………..67 第三章 栈与队列…………………………………………………………………..79 第四章 串…………………………………………………………………………..89 第五章 数组和广义表…………………………………………………………….101 第六章 树和二叉树……………………………………………………………….114 第七章 图………………………………………………………………………….133 第八章 动态存储管理…………………………………………………………….148 第九章 查找……………………………………………………………………….152 第十章 内部排序………………………………………………………………….163

1

基础练习题及答案

第一章 绪论

一、 填空题

1. 数据结构是一门研究非数值计算的程序设计问题中计算机的 操作对象 以及它们之间的 关系 和运算等的学科。 2. 数据结构被形式地定义为(D, R),其中D是 数据元素 的有限集合,R是D上的 关系 有限集合。

3. 数据结构包括数据的 逻辑结构 、数据的 存储结构 和数据的 运算 这三个方面的内容。 4. 数据结构按逻辑结构可分为两大类,它们分别是 线性结构 和 非线性结构 。

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

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

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

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

9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序 、链式 、索引 和 散列 。 10. 数据的运算最常用的有5种,它们分别是插入 、 删除、修改、 查找 、排序。 11. 一个算法的效率可分为 时间 效率和 空间 效率。

12.任何一个C程序都由 一个主函数 和若干个被调用的其它函数组成。

13. 变量一经说明,就确定该变量的取值范围(即存储单元)及 确定变量所允许的运算 。

二、单项选择题

( C )1. 数据结构中,与所使用的计算机无关的是数据的 结构;

A) 存储 B) 物理 C) 逻辑 D) 物理和存储

( C )2. 算法分析的目的是:

A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系 C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性

( A )3. 算法分析的两个主要方面是:

A) 空间复杂性和时间复杂性 B) 正确性和简明性

C) 可读性和文档性 D) 数据复杂性和程序复杂性

( C )4. 计算机算法指的是:

A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法

( B )5. 计算机算法必须具备输入、输出和 等5个特性。

A) 可行性、可移植性和可扩充性 B) 可行性、确定性和有穷性 C) 确定性、有穷性和稳定性 D) 易读性、稳定性和安全性

三、简答题

1. 数据结构和数据类型两个概念之间有区别吗?

答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。

2

2. 简述线性结构与非线性结构的不同点。

答:线性结构反映结点间的逻辑关系是 一对一的,非线性结构反映结点间的逻辑关系是多对多的。

四、阅读下列C程序段,写出相应的执行结果

1.

2. long int fact(n)

int n; scanf(“%d”,&x);

{long f;

if (x<=30) if(n>1)f=n*fact(n-1);

else f=1; if(x>20) y=x;

return(f);

else if (x>10) y=2*x; }

main() if (x>0&&x<30)printf(“x=%d,y=%d”,x,y);

{int n;

else printf(“输入数据错!”); long y;

n=5; 试写出当x分别为18,8时的执行结果。

y=fact(n);

答:运行结果为:x=18,y=36 x=8,y=运行前的值,

printf(“%d,%ld\\n”,n,y);

且从x=30开始为数据错 }

5,120 五、分析下面各程序段的时间复杂度 2. 答:运行结果为: s=0;

for i=0; i

1. for (i=0; i

for(j=0; j

for (j=0; j

s+=B[i][j];

A[i][j]=0;

sum=s;

答:O(m*n)

答:O(n2)

答:O(n2)

3. x=0; for(i=1; i

printf(“Input x”);

六、设有数据逻辑结构S=(D,R),试按各小题所给条件画出这些逻辑结构的图示,并确定相对于关

系R,哪些结点是开始结点,哪些结点是终端结点

1.

D={d1,d2,d3,d4} R={(d1,d2),(d2,d3),(d3,d4) }

答: d1→d2→d3→d4 d1—无直接前驱,是首结点 d4—无直接后继是尾结点 2. D={d1,d2,…,d9}

R={(d1,d2),(d1,d3),(d3,d4),(d3,d6),(d6,d8),(d4,d5), (d6,d7),(d8,d9) }

答: 此图为树形结构 d1—无直接前驱,是根结点 d2,d5,d7,d9—无直接后继是叶子结点 3. D={d1,d2,…,d9}

R={(d1,d3),(d1,d8),(d2,d3),(d2,d4),(d2,d5),(d3,d9), (d5,d6),(d8,d9),(d9,d7), (d4,d7),

3

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4