《数据结构与算法 C语言版》—— 3.8习题

324b817f772fb84b4c80144912edc25e0afde939

前言

“数据结构”是计算机程序设计的重要理论技术基础,是计算机学科的核心课程,也是计算机专业考研的必考课程,同时已成为其他理工科专业的热门课程。学好该课程,不仅对学习后续算法设计、数值分析、操作系统、编译原理等课程有很大帮助,而且在实际中有广泛的用途。

数据结构主要研究数据的各种组织形式以及建立在这些结构之上的各种运算的实现。它不仅为用计算机语言进行程序设计提供了方法性的理论指导,还在一个更高的层次上总结了程序设计的常用方法和常用技巧。
“数据结构”课程的特点是概念多、算法灵活和抽象性强。针对这种情况,我们在参考各种数据结构教材的基础上,结合作者多年的教学经验,编写了这本适用于普通高等院校计算机及相关专业本科生的数据结构教材。本书的编写突出了课程学科能力的培养,体现了“理论和应用”兼顾的教学改革理念。
本书分为11章:第1章绪论,介绍数据、数据结构、抽象数据类型等基本概念,特别是算法分析的方法;第2章线性表,介绍线性表的两种存储结构(顺序表和链表)的逻辑结构与基本运算的实现过程;第3章栈与队列,介绍两种特殊的线性结构的概念与应用;第4章串,介绍串的概念与模式匹配算法;第5章数组与广义表,介绍数组和稀疏矩阵的概念及相关运算的实现,以及广义表的存储结构及相关运算的实现;第6章树与二叉树,介绍树与二叉树的概念和各种运算的实现过程,其中特别突出二叉树的各种递归和非递归算法;第7章图,介绍图的基本概念和各种运算的实现过程;第8章查找,介绍各种常用查找算法的实现过程;第9章排序,介绍各种常用排序算法的实现过程;第10章文件,介绍常用的文件结构;第11章课程设计举例,给出了几个重要数据结构的具体实例。
数据结构是一门应用性非常强的课程,必须在掌握了各种数据结构的基础上,尽可能多地上机练习。为此,本书每章后面都配有相应的上机实验题。
全书采用C语言作为数据结构和算法的描述语言,所有算法均在VC++环境下调试通过。
本书具有以下特色:
1)语言通俗易懂,阐述简洁明了。
2)重点突出算法设计思路,注重培养学生的编程思想和解决实际问题的能力。
3)为激发学生学习该课程的兴趣,增强学生的创新意识,书中融入了一些利用所学知识解决实际问题的例子,如真值表的求解算法、出栈序列的求解算法等。
4)算法丰富,讲解透彻,便于学生自学。
5)通过课程设计的综合训练,使学生在学习理论知识的同时,进一步提高解决实际问题的能力,进一步强化综合应用训练,熟练掌握利用计算机解决问题的一般步骤。
6)通过典型算法设计的分析,使学生所学的知识更加系统化和条理化,更易于对所学知识融会贯通和举一反三。

目录

第1章绪论
1 1数据结构的研究对象
1 2数据结构的发展概况
1 3基本概念与术语
1 4数据类型与抽象数据类型
1 4 1数据类型
1 4 2抽象数据类型
1 4 3抽象数据类型的表示与实现
1 5算法与算法分析
1 5 1算法
1 5 2算法设计的原则
1 5 3算法效率的衡量方法和准则
1 5 4算法的存储空间需求
1 6典型例题
1 7上机实验
1 8小结
习题

第2章线性表
2 1线性表的定义
2 1 1线性表的概念
2 1 2线性表的抽象数据类型定义
2 2线性表的顺序表示与实现
2 2 1线性表的顺序表示
2 2 2线性表的顺序实现
2 2 3顺序表的应用举例
2 3线性表的链式表示与实现
2 3 1单链表
2 3 2双向链表
2 3 3循环链表
2 3 4静态链表
2 3 5链表的应用举例
2 4典型例题
2 5上机实验
2 6小结
习题

第3章栈与队列
3 1栈
3 1 1栈的抽象数据类型定义
3 1 2栈的表示与实现
3 2栈的应用举例
3 2 1数制转换
3 2 2括号匹配的检验
3 2 3表达式求值
3 2 4求命题公式的真值
3 3栈与递归实现
3 3 1递归的定义
3 3 2递归与栈的关系
3 3 3递归的实现
3 3 4用递归求所有出栈序列
3 3 5递归的消除
3 4队列
3 4 1队列的抽象数据类型定义
3 4 2队列的链式表示与实现
3 4 3队列的顺序表示与实现——循环队列
3 4 4队列的应用举例
3 5典型例题
3 6上机实验
3 7小结
习题

第4章串
4 1串的定义
4 2串的表示与实现
4 2 1串的顺序存储表示
4 2 2串的链式存储表示
4 3串的模式匹配
4 3 1简单匹配算法
4 3 2首尾匹配算法
4 3 3KMP算法
4 4典型例题
4 5上机实验
4 6小结
习题

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 本演示程序中,集合元素限定为数字,大小由用户输入。集合中数字顺序不限,且一旦出现重复字符或非法字符,程序能自动滤去。输出的运算结果中将不含重复数字或非法字符,且按照从小到大的顺序输出。<br>2. 演示程序以用户和计算机的对话方式执行,即在计算机上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的数据输入和运算结果显示在其后。<br>3. 程序执行的命令包括:<br>(1)构造集合1;(2)构造集合2;(3)判断某数是否为集合元素;(4)添加元素;(5)删除元素;(6)求并集(存入集合1中);(7)求交集(存入集合3中);(8)输出集合1;(9)输出集合2;(0)退出。<br>“构造集合1”和“构造集合2”时,需以整型数字形式键入集合元素。<br><br>为实现上述程序功能,以线性链表表示集合。为此,需要两个抽象数据类型:线性表和集合。<br>1. 线性表的抽象数据类型定义为:<br> ADT LinkList{<br> 数据对象:D={ | IntSet,i=1,2,…,n,n 0}<br> 数据关系:R1={< , >| , D, < ,i=2,…,n}<br> 基本操作:<br> InitList(*L)<br> 操作结果:构造一个空的线性链表L。<br> IsElement(*L,e)<br> 初始条件:线性表L已存在。<br> 操作结果:若e是L的数据元素,返回1,否则返回0。<br> Append(*L,e)<br> 初始条件:线性表已存在。<br> 操作结果:按照由大到小的顺序往线性表里插入元素e,不允许重复元素。<br> Delete(*L,e)<br> 初始条件:线性表已存在。<br> 操作结果:在L中删除元素e。<br> }ADT LinkList<br>2. 集合的抽象数据类型定义为:<br> ADT LinkSet {<br> 数据对象:D={ | IntSet,i=1,2,…,n,n 0}<br> 数据关系:R1={}<br> 基本操作:<br> CreatSet(*L)<br> 初始条件:s为整型数组。<br> 操作结果:生成一个由s中数字构成的集合。<br> Union(*S1,*S2)<br> 初始条件:集合S1和S2存在。<br> 操作结果:生成一个由S1和S2的并集构成的集合,返回到S1。<br> Intersection (*S1,*S2)<br> 初始条件:集合S1和S2存在。<br> 操作结果:生成一个由S1和S2的交集构成的集合,返回到S1。<br> PrintSet (*S)<br> 初始条件:集合S已存在。<br> 操作结果:依次显示集合S中的全部元素。<br> }ADT LinkSet<br><br><br>带菜单<br>Turbo c 3.0编写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值