数据结构试题集题库含答案

上传人:考试不挂****2941... 文档编号:133283567 上传时间:2022-08-09 格式:DOC 页数:110 大小:1.47MB
收藏 版权申诉 举报 下载
数据结构试题集题库含答案_第1页
第1页 / 共110页
数据结构试题集题库含答案_第2页
第2页 / 共110页
数据结构试题集题库含答案_第3页
第3页 / 共110页
资源描述:

《数据结构试题集题库含答案》由会员分享,可在线阅读,更多相关《数据结构试题集题库含答案(110页珍藏版)》请在装配图网上搜索。

1、第一章 绪论一.填空题1. 数据结构包括数据的逻辑结构、数据的存储结构和 数据的运算 。2. 数据的逻辑结构可以分为 线性 和 非线性 两大类型。3. 在算法正确的前提下,评价一个算法好坏的两个主要标准是 时间 和 空间 。4. 对于给定的n个元素,可以构造出的逻辑结构有线性、树形 、 图形 和 集合 四种。5. 数据的存储结构不仅有顺序存储结构、链式存储结构,还有 索引存储结构 和 散列存储结构 。6. 组成数据的基本单位是 数据元素 。7. 数据结构的两个要素是 数据元素 和 数据元素之间的关系 。8. 语句频度是 语句重复执行的次数 。9. 算法是 对特定问题求解步骤的一种描述,是指令的

2、有限序列 。10. 数值计算问题是 操作对象之间的关系可以用数学方程加以描述的问题 ;非数值计算问题是 操作对象之间的关系不能用数学方程加以描述的问题 。11. 程序是 算法在计算机上的特定的实现 。12. 抽象数据类型是 指一个数学模型以及定义在该模型上的一组操作 。13. 学习数据结构课程的目的是 非数值计算问题的程序设计 。14. 算法可用 自然语言、流程图、N-S图、计算机语言、伪码语言等 描述。15. 存储密度是 一个结点中数据元素所占的存储单元和整个结点所占的存储单元之比 。二.简答题1. 试说明算法与程序有哪些区别?答:至少有四点区别:(1)程序不一定满足有穷性(如操作系统);(

3、2)程序中的指令必须是机器可执行的,算法中的指令则无此限制;(3)算法代表了对问题的解,程序则是算法在计算机上的特定的实现(一个算法若用程序设计语言来描述,它才是一个程序);(4)数据结构+算法=程序。2. 举一个数据结构的例子,叙述其逻辑结构、存储结构和运算(操作)三方面的内容。答:例如有一张学生成绩表,记录了一个班的学生各门课的成绩。按学生的姓名为一行记成的表,这个表就是一个数据结构。每个记录(有姓名、学号、成绩等项)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其它的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一

4、个记录)。这几个关系就确定了这个表的逻辑结构线性结构。那么我们怎样把这个表中的数据存储到计算机里呢? 用高级语言如何表示各结点之间的关系呢? 是用一片连续的内存单元来存放这些记录(如用数组存储,亦即顺序存储)还是随机存放各结点数据再用指针进行链接(链式存储)呢? 这就是存储结构的问题,我们都是从高级语言的层次来讨论这个问题的。最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中的记录进行查询、修改、删除等操作,对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算(操作)问题了。3. 什么叫算法效率?如何度量算法效率?答:算法效率包括时间效率和空间效率。时间效率指算法运行得有

5、多快;空间效率关心算法需要的额外空间。算法效率通常用时间复杂度和空间复杂度来度量。4. 数据的逻辑结构与存储结构的区别和联系是什么?答:区别:数据的逻辑结构是一个数学模型;数据的存储结构是数据的逻辑结构在计算机内部的存储方式。联系:一种逻辑结构可以用多种存储结构来存储;一种存储结构可以用来存多种逻辑结构。5. 算法有什么特性?评价一个算法有几个标准?答:一个算法应该具有以下五个特性:(1)有穷性。 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成 (有限步完成)。(2)确定性。算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口(无二义性)。 (3)可行

6、性。一个算法是可行的。即算法描述的操作都是可以通过已经实现的基本运算执行有限次来实现的(每一步都可通过执行有限次基本操作实现)。 (4)输入性。一个算法有零个或多个输入,这些输入取自于某个特定的对象集合(有零个或多个输入)。(5)输出性。一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量(有一个或多个输出)。评价一个算法有以下几个标准:(1) 正确性。算法应满足具体问题的需求。(2) 可读性。 算法应该好读。以有利于阅读者对程序的理解。(3) 健壮性。算法应具有容错处理。当输入非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。(4) 高效性。指算法执行的时间和执行过程中

7、所需要的最大存储空间要少。一般,这两者与问题的规模有关。第二章 顺序表一.填空题1. 当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用 顺序 存储结构。2. 线性表L=(a1,a2,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是(n-1)/2 。3. 顺序表中查找某个元素时,从前到后查找与从后到前查找的时间复杂度 相 同。4. 在具有n个元素的顺序表中插入一个元素,合法的插入位置有 n+1 个。5. 在一个长度为n 的顺序表中第i 个元素(1=ilen =maxsize ) /*表满*/ printf

8、(the list is fulln); return 0; else if (i SeqL-len+1) /*位置不对*/ printf(the position is invalidn ); return -1; else /*正常插入*/ for (j=SeqL-len;j=i;j-) SeqL-dataj+1= SeqL-dataj; /*元素后移*/ SeqL-datai=x; /*插入元素*/ (SeqL-len)+; /*表长加1*/ return 1; 2. 下列算法完成删除顺序表SeqL的第i个元素,元素类型为DataType,其值通过参数px返回,请在空的下划线上填写合适的

9、内容完成该算法。 int seq_del (SeqList *SeqL,int i, DataType *px ) int j ; if (SeqL-len=0) /*表空*/ printf(the list is emptyn); return 0; else if( i SeqL-len ) /*位置不对*/ printf(n the position is invalid); return -1; else /*正常删除*/ *px=SeqL-datai; /*删除元素通过参数px 返回*/ for (j=i+1;jlen;j+) SeqL-dataj-1= SeqL-dataj ; /

10、*元素前移*/ SeqL-len= SeqL-len-1; /*表长减1*/ return 1; 3. 什么是线性表?线性表有什么特点?答:线性表是具有相同数据类型的 n( 0)个数据元素的有限序列。线性表除第一个元素外,其它每一个元素有一个且仅有一个直接前驱;除最后一个元素外,其它每一个元素有一个且仅有一个直接后继。4. 设有一整型顺序表L,元素从位置1开始存放,下列算法实现将以第一个元素为基准,将其放置在表中合适的位置,使得其前面的元素都比它小,后面的元素均大于等于该元素。请在空的下划线上填写合适的内容完成该算法。void part(SeqList *L) int i, j; /*循环变量

11、声明*/ int x; x= L-data1 ; /*将第一个元素置入x中*/ for(i=2;ilen;i+) if( L-dataidata0=L-datai; /*当前元素暂存在0位置*/ for(j=i-1;j=1;j-) /*当前元素前面所有元素后移*/ L-dataj+1=L-dataj; L-data1=L-data0;_ /*当前元素从0位置移到最前面*/ 5. 什么是顺序存储结构?顺序存储结构的优点和缺点各是什么?答:顺序存储结构是把逻辑上相邻的元素存储在物理位置相邻的存储单元中。通常用数组实现。顺序存储有三个优点: (1)方法简单,用数组,容易实现。 (2)不用为表示结点的

12、逻辑关系而增加额外开销。 (3)具有按元素序号随机访问的特点。 顺序存储有两个缺点: (1)进行插入、删除时,平均移动表中一半的元素,效率较低。 (2)需预先分配足够大的存储空间。空间估计过大,会导致空间闲置(造成浪费);预先分配过小,又会造成溢出。三.程序设计题1. 在顺序存储结构的职工工资表中,职工工资信息包括:职工号(no)、姓名(name)、职称(pro)、工资(sal)等四项信息,请编写一完整的程序,实现以下功能:(1)创建信息表:从键盘读入所有职工的信息。(3分)(2)删除:给定职工号,删除该职工的信息。(6分)(3)修改:对职称为“教授”的职工工资加100。(4分)(4)在显示器

13、(屏幕)上显示所有职工的各项信息。(3分)(5)主程序以菜单的方式调用以上功能。(4分)元素类型及顺序表类型定义如下:typedef struct char no8,name10,pro6;float sal; DataType;typedef struct DataType dataMAXLEN+1; int len;SeqList;2. 图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)四项信息,编写完整程序通过顺序表实现:(1) 初始化:录入现有的所有图书的四项信息。(3分) (2) 借书:每本书每次只能借一本,如果库中有该书,则允许借阅

14、并使该书的现存量减1,否则给出相应提示信息。(4分)(3) 价值估算:统计库中所有书的价钱。价钱为所有书的单价乘以库存量的累加和。(4分)(4) 显示:显示图书管所有藏书信息。(3分)(5) 主程序以菜单的方式调用以上功能。(4分)元素类型及顺序表类型定义2分。3. 设有两个整型顺序表L1,L2,其元素值递增有序存放,请定义该顺序表的元素类型及表类型(2分);设计以下自定义函数:(1)录入顺序表中所有元素的值。(3分)(2)将顺序表L1,L2合并为到另外一个顺序表L3中,L3中的元素非递减有序排列。(8分)(3)输出顺序表中元素的值。(3分)主函数通过调用以上函数实现两个表的合并并显示合并结果

15、。(4分)4. 有一个职工基本信息管理,职工信息包含:职工号、姓名、性别;编写完整程序,实现如下功能: (1)录入函数input:从键盘读入职工信息。(3分) (2)删除函数delete:给定职工号,删除该职工的信息。(5分) (3)插入函数insert:假定表中职工信息按职工号升序排列,任意给定一职工信息,使得插入后依然有序。(6分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。5. 有一个学生信息包含:学号no主关键字;姓名name;英语成绩score。定义学生信息类型DataType及顺序表类型SeqList;(1)录入函数input:从键盘读入学生信息。(3分)(2)查找函数

16、search:任意给定一个学号,查找其英语成绩,将其成绩通过函数返回,若找不到,返回-1。(5分)(3)插入函数insert:假定表中学生信息按学号升序排列,任意给定一学生信息,使得插入后依然有序。(6分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。6. 设有一个超市的库存情况如下表1所示: 表1 超市商品信息商品编号 商品名称 价格 库存量10110001 作业本 1.2 20 10110002 铅笔 1.0 10 10110003 钢笔 0.5 30 10110004 铅笔刀 10 5 编写完整程序实现: (1) 从键盘输入货物信息并将其放在顺序表中。(4分)。(2) 假定商品

17、信息按货号升序存放,任意插入一商品信息,要求按货号有序插入到表中。(6分)(3) 任意给定一个商品编号,查找其商品名称、价格和库存量,如果存在该商品输出并返回1,否则返回0。(4分) 主函数以菜单形式调用以上功能,类型定义2分,主函数4分。7. 有一个房产信息管理系统,房产信息包含:门牌号、户主、电话号码、面积。编程实现如下功能(要求用顺序表存储):(1) 编写一个初始化函数input:从键盘读入房产基本信息。(3分)(2) 编写一个取暖费用计算函数cost:任意给定一门牌号,根据门牌号进行查询,找到时,返回应缴纳取暖费,否则返回0,并且给出提示信息。计算公式为:每户应缴纳费用=面积*4.5元

18、/m2。(4分)(3) 编写一排序函数sort:按门牌号升序排列。(4分)(4) 编写一个函数output:输出所有面积低于90平方米住户的名称。(3分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。8. 有一个学生信息包含:学号no主关键字;姓名name;英语成绩english,计算机成绩comp,数学成绩math。定义学生信息类型DataType及顺序表类型SeqList;(1)录入基本信息函数input:从键盘读入学生姓名、学号。(3分)(2)录入成绩inp_score:给定课程名称,录入所有人本门课的成绩。(3分)(3) 删除函数del:假定表中学生信息学号升序排列,任意给定

19、一学生学号,删除该学生信息,正常删除返回1,否则返回0。(6分)(4)输出函数output:输出所有人的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。9. 设有一个商品信息表(包括商品编号no、商品名称name、商品库存量count和商品单价price),编程实现以下功能:(1) 货物信息录入:按货号有序输入学生信息。(3分)(2) 进货管理:任意输入一个货物信息,在表中查找该货物,若存在此货物,则将该货物的数量加到表中货物数量中;若不存在该货物,则将该货物信息按照货物号有序插入到表中。(10分)(3)货物信息输出:输出所有货物的信息。(2分)主函数以菜单形式调用以上功

20、能,类型定义2分,主函数3分。10. 设有一个商品信息表(包括商品编号no、商品名称name、商品库存量count和商品单价price),编程实现以下功能:(1)货物信息录入:按货号有序输入货物信息。(3分)(2)出货管理:函数返回值为购买该货物的金额。任意输入一个货物信息x,在表中查找该货物,若存在此货物且库存量大于等于x的数量,则将表中货物的库存量减去x的数量,计算出需支付的金额并返回;若库存量不足,则给出相应的提示并返回0。若不存在该货物,返回-1。(10分)(3)货物信息输出:输出所有货物的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。11. 有一自来水公司水费

21、缴费系统中,数据信息包括:用户名称、编号、用水量、水费、缴费情况(缴清,未缴),请定义用户信息数据类型及顺序表类型并设计如下函数:函数1:输入所有用户的名称,编号,用水量,用户名为”?”作为结束符。每个用户的水费通过公式:水费=用水量*0.59计算得出。用户的缴费情况都设为未缴。(4分)函数2:输入用户编号,查找到该用户信息并将该用户的缴费情况都设为缴清。(4分)函数3:设计一个排序函数,将元素信息按编号有序排列。(4分)函数4:输出所有的未缴费的用户名称。(3分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。12. 设有一个超市商品信息表(包括商品编号no、商品名称name、商品库

22、存量amount和商品单价price),编程实现以下功能:(1)货物信息录入:输入一批货物信息,货号为“000”时结束。(3分)(2)购物管理:输入若干货物货号、数量(即客户所购买的货物信息),货号为“000”时结束,输出所购买的每个货物货号、名称、数量、单价、金额(单价通过查找得到,金额=单价数量);最后输出总的价格。(10分)(3)货物信息输出:输出所有货物的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。13. 有一学生成绩信息包括:姓名、学号、成绩、名次;编程实现以下功能:(1)输入所有人姓名、学号、成绩,名次初始化为0。(3分)(2)给定一学生学号,输出其成绩,

23、若不存在该学号,给出相应的错误提示。(4分)(3)将学生信息按成绩由高到低排序,并将其名次存入该学生信息的“名次”中。(6分)(4)输出所有学生的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。14. 学生考勤管理。学生信息包括:姓名、学号、考勤情况(迟到、旷课、按时上课),成绩及本次已经是第几次考勤。每个人有20次考勤,编程实现以下功能:(1)学生基本信息录入及初始化:输入所有学生的姓名、学号,将每个人的考勤成绩置0,将考勤次数也置0。(3分)(2)输入考勤情况:每次上课,输入本次考勤,从第一个人开始,依次输入每个人的考勤。(4分)(3)计算考勤成绩:迟到得0.5分,旷

24、课得0分,正常上课得1分,计算每个人的考勤成绩。(5分)(4)输出所有人的学号、姓名、考勤情况、考勤成绩。(3分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。元素类型定义如下:typedef struct char name10; /*name表示学生姓名*/ char no12; /*no表示学号*/char kaoqin21; /*kaoqin表示20次的考勤,q-缺课,c-迟到,z-按时上课*/int k; /*k表示已经考勤到第几次,初始化时将其置为-1*/int score; /*score表示考勤成绩*/ DataType;若有DataType x,则x. kaoqin

25、2表示x的第三次考勤。15. 有一个职工基本信息管理,职工信息包含:职工号、姓名、工资;编写完整程序,实现如下功能: (1) 录入函数input:从键盘读入职工信息。(3分) (2) 修改函数modify:给定职工号,查找该职工,若找到修改其信息,若找不到,给出错误提示。(4分) (3) 插入函数insert:假定表中职工信息按职工号升序排列,任意给定一职工信息,使得插入后依然有序。(6分) (4) 输出函数output:输出所有人的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。16. 有一个学生成绩管理,学生信息包含:学号、姓名、成绩;编写完整程序,实现如下功能: (

26、1) 录入函数input:从键盘读入学生信息。(3分) (2) 修改函数modify:给定学号,查找该学生,若找到修改其成绩,若找不到,给出错误提示。(4分) (3) 排序函数sort:将学生信息按成绩由高到低排序。 (6分) (4) 输出函数output:输出所有人的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。17. 图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)四项信息,编写完整程序通过顺序表实现:(1) 初始化:录入现有的所有图书的四项信息。(3分) (2) 清库:给定某书x的书号及数量,若找到该书,将该书的

27、现存量及库存量减去x的数量,若减后的库存量为0,则删除该书信息;若找不到该书,则给出错误提示。(9分)(3) 显示:显示图书管所有藏书信息。(2分)(4) 主程序以菜单的方式调用以上功能。(4分)元素类型及顺序表类型定义(2分)18. 图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)四项信息,编写完整程序通过顺序表实现:(1) 初始化:录入现有的所有图书的四项信息。(3分)(2) 检索:给定书名,输出所有与给定书名相同的书的信息。(3分)(3) 价值估算:统计库中所有书的价钱。价钱为所有书的单价乘以库存量的累加和。(6分)(4) 显示:显示图

28、书管所有藏书信息。(2分)(5) 主程序以菜单的方式调用以上功能。(4分)(6) 完成元素类型定义及顺序表类型定义(2分)。19. 图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)四项信息,编写完整程序通过顺序表实现:(1) 初始化:录入现有的所有图书的四项信息。(3分)(2) 查找:给定书号,在表中查找该书,若存在返回其位置,否则返回0。(4分)(3) 进书:给定某个图书的书名、书号、数量,若此次购进的是图书馆已有的图书,则修改其现存量和总库存量;若此次购进的图书是新书,按书号有序插入到表中。(假定表中元素按书号升序排列)(7分)(4) 主

29、程序以菜单的方式调用以上功能。(4分)(5) 完成元素类型定义及顺序表类型定义(2分)。20. 学生学费管理。学生信息包括:姓名、学号、学费、已缴学费、欠费。编写完整程序通过顺序表实现:(1) 初始化:录入所有人的姓名、学号、学费。(3分)(2) 缴费:输入学号及已缴学费,欠费=学费-已缴学费。(5分)(3) 催缴学费:对欠费为正数的人,输出其姓名、学号、欠费并统计所有人的欠费总数,总的欠费数目以函数值的形式返回(6分)(4) 主程序以菜单的方式调用以上功能。(4分)(5) 完成元素类型定义及顺序表类型定义(2分)。解答:1. /*1. 在顺序存储结构的职工工资表中,职工工资信息包括:职工号(

30、no)、姓名(name)、职称(pro)、工资(sal)等四项信息,请编写一完整的程序,实现以下功能:(1)创建信息表:从键盘读入所有职工的信息。(3分)(2)删除:给定职工号,删除该职工的信息。(6分)(3)修改:对职称为教授的职工工资加100。(4分)(4)在显示器(屏幕)上显示所有职工的各项信息。(3分)(5)主程序以菜单的方式调用以上功能。(4分)*/#include #include #include #define MAXLEN 100 typedef struct char no8,name10,pro6; float sal; DataType;typedef struct D

31、ataType dataMAXLEN+1; int len;SeqList;/*从键盘读入所有职工的信息*/void input(SeqList*L) int i; printf(input the lengthn); scanf(%d,&L-len); printf(input no,name,pro,saln); for(i=1;ilen;i+) scanf(%s%s%s%f,L-datai.no,L-datai.name,L-datai.pro,&L-datai.sal);/*给定职工号,删除该职工的信息*/void del(SeqList*L,DataType x) int j,i=1

32、; while(ilen&strcmp(L-datai.no,x.no)!=0) /*查找元素x所在位置*/ i+; if(iL-len ) printf(not findn); else for (j=i+1;jlen;j+) /*删除元素X*/ L-dataj-1=L-dataj; (L-len)-; /*对职称为教授的职工工资加100*/void modify(SeqList*L)int i;for(i=1;ilen;i+) if(strcmp(L-datai.pro,教授)=0) L-datai.sal+=100; /*菜单*/void menu()printf(1-录入信息n);pr

33、intf(2-删除n);printf(3-修改n);printf(4-输出n);printf(0-退出n);void main()SeqList* L; DataType x;int sel,i;L=(SeqList*)malloc(sizeof(SeqList);L-len=0; do menu(); printf(input your selectn); scanf(%d,&sel); switch(sel) case 1:input(L);break; case 2:printf(input non); scanf(%s,x.no); del(L,x); break; case 3:mo

34、dify(L); break; case 4:for(i=1;ilen;i+) printf(%10s%12s%8s%7.1fn,L-datai.no,L-datai.name,L-datai.pro,L-datai.sal); while(sel!=0); 2. /*2图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)四项信息,编写完整程序通过顺序表实现:(1) 初始化:录入现有的所有图书的四项信息。(3分) (2) 借书:每本书每次只能借一本,如果库中有该书,则允许借阅并使该书的现存量减1,否则给出相应提示信息。(4分)(3) 价值估算:统

35、计库中所有书的价钱。价钱为所有书的单价乘以库存量的累加和。(4分)(4) 显示:显示图书管所有藏书信息。(3分)(5) 主程序以菜单的方式调用以上功能。(4分)元素类型及顺序表类型定义2分。*/#include #include #include #define MAXLEN 100 typedef struct char no8,name10; int newnum,sumnum; float price; DataType;typedef struct DataType dataMAXLEN+1; int len;SeqList;/*从键盘读入所有图书的信息*/void input(Seq

36、List*L) int i; printf(input the lengthn); scanf(%d,&L-len); printf(input no,name,newnum,sumnum,pricen); for(i=1;ilen;i+) scanf(%s%s%d%d%f,L-datai.no,L-datai.name,&L-datai.newnum,&L-datai.sumnum,&L-datai.price);/*借书*/void brow(SeqList*L,DataType x) int i=1; while(ilen&strcmp(L-datai.no,x.no)!=0) /*查找

37、元素x所在位置*/ i+; if(iL-len ) printf(not findn); else if( L-datai.newnum0) L-datai.newnum-; else printf(the book is brown);/*价值估算*/float volue(SeqList*L) float v=0; int i; for(i=1;ilen;i+) v+=L-datai.price*L-datai.sumnum; return v;/*显示*/void output(SeqList*L)int i; printf(no,name,newnum,sumnum,pricen);

38、for(i=1;ilen;i+) printf(%10s%12s%5d%5d%7.2fn,L-datai.no,L-datai.name,L-datai.newnum,L-datai.sumnum,L-datai.price); /*菜单*/void menu()printf(1-录入信息n);printf(2-借书n);printf(3-估价n);printf(4-输出n);printf(0-退出n);void main()SeqList* L; DataType x;int sel;float v;L=(SeqList*)malloc(sizeof(SeqList);L-len=0; do

39、 menu(); printf(input your selectn); scanf(%d,&sel); switch(sel) case 1:input(L);break; case 2:printf(input non); scanf(%s,x.no); brow(L,x); break; case 3:v=volue(L); printf(the sum vulue is%10.2fn,v); break; case 4:output(L); break; while(sel!=0);3. /*设有两个整型顺序表L1,L2,其元素值递增有序存放,请定义该顺序表的元素类型及表类型(2分);

40、设计以下自定义函数:(1)录入顺序表中所有元素的值。(3分)(2)将顺序表L1,L2合并为到另外一个顺序表L3中,L3中的元素非递减有序排列。(8分)(3)输出顺序表中元素的值。(3分)主函数通过调用以上函数实现两个表的合并并显示合并结果。(4分)*/#include #include #define MAXLEN 100 typedef struct int dataMAXLEN+1; int len;SeqList;/*录入*/void input(SeqList*L) int i; printf(input the lengthn); scanf(%d,&L-len); printf(i

41、nput elementn); for(i=1;ilen;i+) scanf(%d,&L-datai);/*合并*/void merge(SeqList* A, SeqList* B, SeqList *C) int i,j,k; i=1;j=1;k=1; while(ilen & jlen) if(A-dataidataj) C-datak+=A-datai+; else C-datak+=B-dataj+; while(ilen) C-datak+=A-datai+; while(jlen) C-datak+=B-dataj+; C-len=k-1; /*显示*/void output(S

42、eqList*L)int i; for(i=1;ilen;i+) printf(%5dn,L-datai); /*菜单*/void menu()printf(1-表1录入n);printf(2-表2录入n);printf(3-合并n);printf(4-输出合并后的表n);printf(0-退出n);void main()SeqList* L1,*L2,*L3; int sel;L1=(SeqList*)malloc(sizeof(SeqList);L1-len=0; L2=(SeqList*)malloc(sizeof(SeqList);L2-len=0; L3=(SeqList*)mall

43、oc(sizeof(SeqList);L3-len=0; do menu(); printf(input your selectn); scanf(%d,&sel); switch(sel) case 1: printf(input list1n); input(L1); break; case 2: printf(input list2n); input(L2); break; case 3:merge(L1,L2,L3); break; case 4:output(L3); while(sel!=0); 4. /*有一个职工基本信息管理,职工信息包含:职工号、姓名、性别;编写完整程序,实现

44、如下功能: (1)录入函数input:从键盘读入职工信息。(3分) (2)删除函数delete:给定职工号,删除该职工的信息。(5分) (3)插入函数insert:假定表中职工信息按职工号升序排列,任意给定一职工信息,使得插入后依然有序。(6分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。*/#include #include #include #define MAXLEN 100 typedef struct char no8,name10,xb3; /*注意字符型数组存放字符串时需多申请一个*/ DataType;typedef struct DataType dataMAXL

45、EN+1; int len;SeqList;/*从键盘读入所有职工的信息*/void input(SeqList*L) int i; printf(input the lengthn); scanf(%d,&L-len); printf(input no,name,xbn); for(i=1;ilen;i+) scanf(%s%s%s,L-datai.no,L-datai.name,L-datai.xb);/*查找*/int search(SeqList*L,DataType x)int i=1; while(ilen&strcmp(L-datai.no,x.no)!=0) /*查找元素x所在

46、位置*/ i+; if(iL-len ) return 0; return i;/*给定职工号,删除该职工的信息*/void del(SeqList*L,DataType x) int j,i; i=search(L,x); if(i=0 ) printf(not findn); else for (j=i+1;jlen;j+) /*删除元素X*/ L-dataj-1=L-dataj; (L-len)-; /*插入职工信息*/void ins(SeqList*L,DataType x)int i,j;i=search(L,x); if(i=0 ) i=1; /*查找插入位置*/ while(i

47、len&strcmp(x.no,L-datai.no)0) i+; for(j=L-len;j=i;j-) L-dataj+1=L-dataj; L-datai=x; L-len+;else printf(the element already existn);/*菜单*/void menu()printf(1-录入信息n);printf(2-查找n);printf(3-删除n);printf(4-插入n);printf(5-输出n);printf(0-退出n);void main()SeqList* L; DataType x;int sel,i;L=(SeqList*)malloc(siz

48、eof(SeqList);L-len=0; do menu(); printf(input your selectn); scanf(%d,&sel); switch(sel) case 1:input(L);break; case 2:printf(input non); scanf(%s,x.no); i=search(L,x); if(i=0) printf(not exsitn ); else printf(%10s%12s%4sn,L-datai.no,L-datai.name,L-datai.xb); break; case 3:printf(input non); scanf(%s,x.no); del(L,x);break; case 4:printf(input no,name,xbn); scanf(%s%s%s,x.no,x.name,x.xb); ins(L,x); break; case 5:for(i=1;ilen;i+) printf(%10s%12s%4sn,L-datai.no,L-datai.name,L-datai.xb); while(sel!=0);5. /*有一个学生信息包含:学号no主关键字;姓名name;英语成绩score。定义学生信息类型

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!