《西安理工大学数据结构试题集参考答案.docx》由会员分享,可在线阅读,更多相关《西安理工大学数据结构试题集参考答案.docx(114页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章绪论一.填空题1 .数据结构包括数据的逻辑结构、数据的存储结构和数据的运算。2 .数据的逻辑结构可以分为线性和非线性两大类型。3 .在算法正确的前提下,评价一个算法好坏的两个主要标准是时间复杂度和空间复杂鼠。4 .对于给定的n个元素,可以构造出的逻辑结构有线性、树形、图形和集合四种。5 .数据的存储结构不仅有顺序存储结构、链式存储结构,还有索引存储结构和散列存储结构。6 .组成数据的基本单位是数据元素。7 .数据结构的两个要素是数据元素和数据元素之间的关系o8 .语句频度是语句重复执行的次数。9 .算法是对特定问题求解步骤的一种描述,是指令的有限序列。10 .数值计算问题是操作对象之间的
2、关系可以用数学方程加以描述的问题;非数值计算问题是操作对象之间的关系不能用数学方程加以描述的问题。11 .程序是算法在计算机上的特定的实现。12 .抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。13 .学习数据结构课程的目的是非数值计算问题的程序设计。14 .算法可用自然语言、流程图、N-S图、计算机语言、伪码语言等描述。15 .存储密度是一个结点中数据元素所占的存储单元和整个结点所占的存储单元之比。二.简答题1.试说明算法与程序有哪些区别?答:至少有四点区别:(1)程序不一定满足有穷性(如操作系统);(2)程序中的指令必须是机器可执行的,算法中的指令则无此限制;(3)算法代表了对
3、问题的解,程序则是算法在计算机上的特定的实现(一个算法若用程序设计语言来描述,它才是一个程序);(4)数据结构+算法=程序。2 .举一个数据结构的例子,叙述其逻辑结构、存储结构和运算(操作)三方面的内容。答:例如有一张学生成绩表,记录了一个班的学生各门课的成绩。按学生的姓名为一行记成的表,这个表就是一个数据结构。每个记录(有姓名、学号、成绩等项)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其它的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录).这几个关系就确定了这个表的逻辑结构线性结构。那么我们怎样把这个表中的
4、数据存储到计算机里呢?用高级语言如何表示各结点之间的关系呢?是用一片连续的内存单元来存放这些记录(如用数组存储,亦即顺序存储)还是随机存放各结点数据再用指针进行链接(链式存储)呢?这就是存储结构的问题,我们都是从高级语言的层次来讨论这个问题的。最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中的记录进行查询、修改、删除等操作,对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算(操作)问题了。3 .什么叫算法效率?如何度量算法效率?答:算法效率包括时间效率和空间效率。时间效率指算法运行得有多快;空间效率关心算法需要的额外空间。算法效率通常用时间复杂度和空间复杂度来度量。4
5、 .数据的逻辑结构与存储结构的区别和联系是什么?答:区别:数据的逻辑结构是一个数学模型;数据的存储结构是数据的逻辑结构在计算机内部的存储方式。联系:一种逻辑结构可以用多种存储结构来存储;一种存储结构可以用来存多种逻辑结构。5 .算法有什么特性?评价一个算法有几个标准?答:一个算法应该具有以下五个特性:(1)有穷性。一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成(有限步完成)。(2)确定性。算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口(无二义性)。(3)可行性。一个算法是可行的。即算法描述的操作都是可以通过已经实现的基本运算执行有限次来实现的(每
6、一步都可通过执行有限次基本操作实现)。(4)输入性。一个算法有零个或多个输入,这些输入取自于某个特定的对象集合(有零个或多个输入)。(5)输出性。一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量(有一个或多个输出)。评价一个算法有以下几个标准:(1)正确性。算法应满足具体问题的需求。(2)可读性。算法应该好读。以有利于阅读者对程序的理解。(3)健壮性。算法应具有容错处理。当输入非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。(4)高效性。指算法执行的时间和执行过程中所需要的最大存储空间要少。一般,这两者与问题的规模有关。第二章顺序表一.填空题1 .当线性表的元素总数
7、基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用顺序存储结构。2 .线性表L=(a1,a2,-,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是(n-1)/2。3 .顺序表中查找某个元素时,从前到后查找与从后到前查找的时间复杂度血同。4 .在具有n个元素的顺序表中插入一个元素,合法的插入位置有n+1个。5 .在一个长度为n的顺序表中第i个元素(1=ilen =maxsize )/*表满*/ printfCthe list is fullWn);return 0;else if (i SeqL-len+1)/*位置不对*/
8、 printfCthe position is invalidWn ); return -1;else/*正常插入*/ for (j=SeqL-len;j=i;j) SeaL-dataj+1= SeqL-dataj;/*元素后移*/ SeciL-datai=x;/*插入元素*/(SeqL-len)+;/*表长加1*/return 1;)2 .下列算法完成删除顺序表SeqL的第i个元素,元素类型为DataType,其值通过参数px 返回,请在空的下划线上填写合适的内容完成该算法。int seq_del (SeqList *SeqL,int i, DataType *px )( int j ; i
9、f (SeqL-len=0)/*表空*/ printfCthe list is emptyWn); return 0;else if( i SeqL-len )/*位置不对*/ printfCWn the position is invalid); return -1;else/*正常删除*/*px=SeqL-datai;/*删除元素通过参数px返回*/for (j=i+1;jlen;j+)SeaL-dataH = SeaL-dataj;/*元素前移*/SeaL-len= SeaL-len-1;/*表长减*/return 1;3 .什么是线性表?线性表有什么特点?答:线性表是具有相同数据类型的
10、n (20)个数据元素的有限序列。线性表除第一个元素外,其它每一个元素有一个且仅有一个直接前驱;除最后一个元素外,其它每一个元素有一个且仅有一个直接后继。4 .设有一整型顺序表L,元素从位置1开始存放,下列算法实现将以第一个元素为基准,将其放置在表中合适的位置,使得其前面的元素都比它小,后面的元素均大于等于该元素。请在空的下划线上填写合适的内容完成该算法。void part(SeqList *L) int i J;/*循环变量声明*/int x;x= L-data1;/*将第一个元素置入x中*/for(i=2;ilen;i+)if( L-dataidata 0=L-data i ;/*当前元素
11、暂存在0位置*/for(j=i-1;j=1;j)/*当前元素前面所有元素后移*/L-dataj+1=L-dataj;L-data1=L-data0;_/*当前元素从0位置移到最前面*/)5 .什么是顺序存储结构?顺序存储结构的优点和缺点各是什么?答:顺序存储结构是把逻辑上相邻的元素存储在物理位置相邻的存储单元中。通常用数组实现。顺序存储有三个优点:(1)方法简单,用数组,容易实现。(2)不用为表示结点的逻辑关系而增加额外开销。(3)具有按元素序号随机访问的特点。顺序存储有两个缺点:(1)进行插入、删除时,平均移动表中一半的元素,效率较低。(2)需预先分配足够大的存储空间。空间估计过大,会导致空
12、间闲置(造成浪费);预先分配过小,又会造成溢出。三.程序设计题1 .在顺序存储结构的职工工资表中,职工工资信息包括:职工号(no)、姓名(name)、职称(pro),工资(sal)等四项信息,请编写一完整的程序,实现以下功能:(1)创建信息表:从键盘读入所有职工的信息。(3分)(2)删除:给定职工号,删除该职工的信息。(6分)(3)修改:对职称为“教授”的职工工资加100。(4分)(4)在显示器(屏幕)上显示所有职工的各项信息。(3分)(5)主程序以菜单的方式调用以上功能。(4分)元素类型及顺序表类型定义如下:typedef struct char no8,name10,pro6;float
13、sal; DataType; typedef struct DataType dataMAXLEN+1; int len;SeqList;2 .图书管每本图书包含:书号(no),书名(name)、现存量(newnum)、总库存量(sum num)四项信息,编写完整程序通过顺序表实现:(1)初始化:录入现有的所有图书的四项信息。(3分)(2)借书:每本书每次只能借一本,如果库中有该书,则允许借阅并使该书的现存量减1,否则给出相应提示信息。(4分)(3)价值估算:统计库中所有书的价钱。价钱为所有书的单价乘以库存量的累加和。(4分)(4)显示:显示图书管所有藏书信息。(3分)(5)主程序以菜单的方式
14、调用以上功能。(4分)元素类型及顺序表类型定义2分。3 .设有两个整型顺序表L1, L2,其元素值递增有序存放,请定义该顺序表的元素类型及表类型(2分);设计以下自定义函数:(1)录入顺序表中所有元素的值。(3分)(2)将顺序表L1, L2合并为到另外一个顺序表L3中,L3中的元素非递减有序排列。(8分)(3)输出顺序表中元素的值。(3分)主函数通过调用以上函数实现两个表的合并并显示合并结果。(4分)4 .有一个职工基本信息管理,职工信息包含:职工号、姓名、性别;编写完整程序,实现如下功能:(1)录入函数input:从键盘读入职工信息。(3分)(2)删除函数delete:给定职工号,删除该职工
15、的信息。(5分)(3)插入函数insert:假定表中职工信息按职工号升序排列,任意给定一职工信息,使得插入后依然有序。(6分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。5 .有一个学生信息包含:学号n。主关键字;姓名name;英语成绩score。定义学生信息类型DataType及顺序表类型SeqList;(1)录入函数input:从键盘读入学生信息。(3分)(2)查找函数search:任意给定一个学号,查找其英语成绩,将其成绩通过函数返回,若找不到,返回7。(5分)(3)插入函数insert;假定表中学生信息按学号升序排列,任意给定一学生信息,使得入后依然有序。(6分)主函数以菜
16、单形式调用以上功能,类型定义2分,主函数4分。6.设有一个超市的库存情况如下表1所示:商品编号表1超市商品信息商品名称价格库存量10110001作业本1.22010110002铅笔1.01010110003钢笔0.53010110004铅笔刀105编写完整程序实现:(1)从键盘输入货物信息并将其放在顺序表中。(4分)。(2)假定商品信息按货号升序存放,任意插入一商品信息,要求按货号有序插入到表中。(6分)(3)任意给定一个商品编号,查找其商品名称、价格和库存量,如果存在该商品输出并返回1,否则返回0。(4分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。7.有一个房产信息管理系统,房
17、产信息包含:门牌号、户主、电话号码、面积。编程实现如下功能(要求用顺序表存储):(1)编写一个初始化函数input:从键盘读入房产基本信息。(3分)(2)编写一个取暖费用计算函数cost:任意给定一门牌号,根据门牌号进行查询,找到时1 返回应缴纳取暖费,否则返回0,并且给出提示信息。计算公式为:每户应缴纳费用=面积*4.5元/nA?。(4分)(3)编写一排序函数sort:按门牌号升序排列。(4分)(4)编写一个函数output:输出所有面积低于90平方米住户的名称。(3分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。8 .有一个学生信息包含:学号no主关键字;姓名name;英语成绩
18、english,计算机成绩comp,数学成绩math,定义学生信息类型DataType及顺序表类型SeqList;(1)录入基本信息函数input:从键盘读入学生姓名、学号。(3分)(2)录入成绩inp_score:给定课程名称,录入所有人本门课的成绩。(3分)(3)删除函数del:假定表中学生信息学号升序排列,任意给定一学生学号,删除该学生信息,正常删除返回1,否则返回0。(6分)(4)输出函数output:输出所有人的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。9 .设有一个商品信息表(包括商品编号no、商品名称name、商品库存量count和商品单价price)
19、,编程实现以下功能:(1)货物信息录入:按货号有序输入学生信息。(3分)(2)进货管理:任意输入一个货物信息,在表中查找该货物,若存在此货物,则将货物的数量加到表中货物数量中;若不存在该货物,则将该货物信息按照货物号有序插入到表中。(10分)(3)货物信息输出:输出所有货物的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。10 .设有一个商品信息表(包括商品编号no、商品名称name、商品库存量count和商品单价price),编程实现以下功能:(1)货物信息录入:按货号有序输入货物信息。(3分)(2)出货管理:函数返回值为购买该货物的金额。任意输入一个货物信息x,在表中
20、查找该货物,若存在此货物且库存量大于等于X的数量,则将表中货物的库存量减去X的数量,计算出需支付的金额并返回;若库存量不足,则给出相应的提示并返回0o若不存在该货物,返回(10分)(3)货物信息输出:输出所有货物的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。11 .有一自来水公司水费缴费系统中,数据信息包括:用户名称、编号、用水量、水费、缴费情况(缴清,未缴),请定义用户信息数据类型及顺序表类型并设计如下函数:函数1:输入所有用户的名称,编号,用水量,用户名为“???”作为结束符。每个用户的水费通过公式:水费=用水量*0.59计算得出。用户的缴费情况都设为未缴。(4分
21、)函数2:输入用户编号,查找到该用户信息并将该用户的缴费情况都设为缴清。(4分)函数3:设计一个排序函数,将元素信息按编号有序排列。(4分)函数4:输出所有的未缴费的用户名称。(3分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。12 .设有一个超市商品信息表(包括商品编号no、商品名称name、商品库存量amount和商品单价price),编程实现以下功能:(1)货物信息录入:输入一批货物信息,货号为“000”时结束。(3分)(2)购物管理:输入若干货物货号、数量(即客户所购买的货物信息),货号为“000”时结束,输出所购买的每个货物货号、名称、数量、单价、金额(单价通过查找得到,
22、金额=单价X数量);最后输出总的价格。(10分)(3)货物信息输出:输出所有货物的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。13 .有一学生成绩信息包括:姓名、学号、成绩、名次;编程实现以下功能:(1)输入所有人姓名、学号、成绩,名次初始化为0。(3分)(2)给定一学生学号,输出其成绩,若不存在该学号,给出相应的错误提示。(4分)(3)将学生信息按成绩由高到低排序,并将其名次存入该学生信息的“名次”中。(6分)(4)输出所有学生的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。14 .学生考勤管理。学生信息包括:姓名、学号、考勤情况(迟到、旷课
23、、按时上课),成绩及本次已经是第几次考勤。每个人有20次考勤,编程实现以下功能:(1)学生基本信息录入及初始化:输入所有学生的姓名、学号,将每个人的考勤成绩置0,将考勤次数也置0。(3分)(2)输入考勤情况:每次上课,输入本次考勤,从第一个人开始,依次输入每个人的考勤。(4分)(3)计算考勤成绩:迟到得0.5分,旷课得0分,正常上课得1分,计算每个人的考勤成绩。(5分)(4)输出所有人的学号、姓名、考勤情况、考勤成绩。(3分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。元素类型定义如下:typedef struct char name10;/*name 表示学生姓名*/char n
24、o12;/*no表示学号*/char kaoqin21;/*kaoqin表示20次的考勤,q缺课,c迟到,z按时上课*/int k;/*k表示已经考勤到第几次,初始化时将其置为-1*/int score;/*score表示考勤成绩*/ DataType;若有DataTypex,贝!Jx. kaoqin2表示x的第三次考勤。15 .有一个职工基本信息管理,职工信息包含:职工号、姓名、工资;编写完整程序,实现如下功能:(1)录入函数input:从键盘读入职工信息。(3分)(2)修改函数modify:给定职工号,查找该职工,若找到修改其信息,若找不到,给出错误提示。(4分)(3)插入函数insert
25、:假定表中职工信息按职工号升序排列,任意给定一职工信息,使得插入后依然有序。(6分)(4)输出函数output:输出所有人的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。16 .有一个学生成绩管理,学生信息包含:学号、姓名、成绩;编写完整程序,实现如下功能:(1)录入函数input:从键盘读入学生信息。(3分)(2)修改函数modify:给定学号,查找该学生,若找到修改其成绩,若找不到,给出错误提示。(4分)(3)排序函数sort:将学生信息按成绩由高到低排序。(6分)(4)输出函数output:输出所有人的信息。(2分)主函数以菜单形式调用以上功能,类型定义2分,主函
26、数3分。17 .图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sum num)四项信息,编写完整程序通过顺序表实现:(1)初始化:录入现有的所有图书的四项信息。(3分)(2)清库:给定某书x的书号及数量,若找到该书,将该书的现存量及库存量减去x的数量,若减后的库存量为0,则删除该书信息;若找不到该书,则给出错误提示。(9分)(3)显示:显示图书管所有藏书信息。(2分)(4)主程序以菜单的方式调用以上功能。(4分)元素类型及顺序表类型定义(2分)18 .图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sum num)四
27、项信息,编写完整程序通过顺序表实现:(1)初始化:录入现有的所有图书的四项信息。(3分)(2)检索:给定书名,输出所有与给定书名相同的书的信息。(3分)(3)价值估算:统计库中所有书的价钱。价钱为所有书的单价乘以库存量的累加和。(6分)(4)显示:显示图书管所有藏书信息。(2分)(5)主程序以菜单的方式调用以上功能。(4分)(6)完成元素类型定义及顺序表类型定义(2分)。19 .图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sum num)四项信息,编写完整程序通过顺序表实现:(1)初始化:录入现有的所有图书的四项信息。(3分)(2)查找:给定书号,在表
28、中查找该书,若存在返回其位置,否则返回0。(4分)(3)进书:给定某个图书的书名、书号、数量,若此次购进的是图书馆已有的图书,则修改其现存量和总库存量;若此次购进的图书是新书,按书号有序插入到表中。(假定表中元素按书号升序排列)(7分)(4)主程序以菜单的方式调用以上功能。(4分)(5)完成元素类型定义及顺序表类型定义(2分20 .学生学费管理。学生信息包括:姓名、学号、学费、已缴学费、欠费。编写完整程序通过顺序表实现:(1)初始化:录入所有人的姓名、学号、学费。(3分)(2)缴费:输入学号及已缴学费,欠费=学费-已缴学费。(5分)(3)催缴学费:对欠费为正数的人,输出其姓名、学号、欠费并统计
29、所有人的欠费总数,总的欠费数目以函数值的形式返回(6分)(4)主程序以菜单的方式调用以上功能。(4分)(5)完成元素类型定义及顺序表类型定义(2分)。解答:1./*1.在顺序存储结构的职工工资表中,职工工资信息包括:职工号(no)、姓名(name )、职称(pro)、工资(sal)等四项信息,请编写一完整的程序,实现以下功能:(1)创建信息表:从键盘读入所有职工的信息。(3分)(2)删除:给定职工号,删除该职工的信息。(6分)(3)修改:对职称为教授的职工工资加100。(4分)(4)在显示器(屏幕)上显示所有职工的各项信息。(3分)(5)主程序以菜单的方式调用以上功能。(4分)*/#inclu
30、de #include #include #define MAXLEN 100 typedef struct char no8,name10,pro6; float sal; DataType; typedef struct DataType data MAXLEN+1; int len;SeqList;/*从键盘读入所有职工的信息*/ void input(SeqList*L) int i;printfCinput the lengthWn);scanf(%d,&L-len);printfCinput no,name,pro,salWn);for(i=1;ilen;i+)scanf(%s%s
31、%s%f, L-data i.no,L-data i.name,L-data i. pro,&L-data i.sal );)/*给定职工号,删除该职工的信息*/void del(SeqList*L,DataType x) int j,i=1; while(ilen&strcmp(L-datai.no,x.no)!=0)/*查找元素x所在位置*/i+; if(iL-len )printfCnot findWn); elsefor G=i+1;jlen;j+)/*删除元素 X*/L-dataj-1=L-dataj;(L-len)一;)/*对职称为教授的职工工资加100*/void modify(
32、SeqList*L)int i;for(i=1;ilen;i+)if(strcmp(L-datai.pro,教授)=0)L-datai.sal+=100;/*菜单*/void menu()printf(1录入信息 Wn);printf(2删除 Wn);printf(3修改 Wn);printf(4输出 Wn);printfCO退出 Wn);)void main()SeqList* L;DataType x;int sel,i;L=(SeqList*)malloc(sizeof (SeqList);L-len=0; do menuO;printfCinput your selectWn);sca
33、nf(%d,&sel);switch(sel)case 1:input(L);break;case 2:printf(input noWn);scanf(%s,x.no);del(L.x);break;case 3:modify(L);break;case 4:for(i=1;ilen;i+)printf(%10s%12s%8s%7.1 fWn, L-data i.no, L-data i.name,L-datai.p ro,L-datai.sal);)while(sel!=0);)2.1*2.图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)
34、四项信息,编写完整程序通过顺序表实现:(1)初始化:录入现有的所有图书的四项信息。(3分)(2)借书:每本书每次只能借一本,如果库中有该书,则允许借阅并使该书的现存量减1,否则给出相应提示信息。(4分)(3)价值估算:统计库中所有书的价钱。价钱为所有书的单价乘以库存量的累加和。(4分)(4)显示:显示图书管所有藏书信息。(3分)(5)主程序以菜单的方式调用以上功能。(4分)元素类型及顺序表类型定义2分。*/#include #include #include #define MAXLEN 100typedef struct char no8,name10;int newnum.sumnum;f
35、loat price; DataType;typedef structDataType data MAXLEN+1;int len;SeqList;/*从键盘读入所有图书的信息*/void input(SeqList*L) int i;printfCinput the lengthWn);scanf(%d,&L-len);printfCinput no,name,newnum.sumnum,priceWn);for(i=1;ilen;i+)scanf(%s%s%d%d%f, L-data i.no, L-data i . nam e,&L-data i . newnum,&L-d atai.s
36、umnum,&L-data i. price);)/*借书*/void brow(SeqList* L, DataType x) int i=1; while(ilen&strcmp(L-datai.no,x.no)!=0)/*查找元素x所在位置*/i+;if(iL-len )printfCnot findWn);else if( L-datai.newnum0)L-datai.newnum一;elseprintfCthe book is brown);)/*价值估算*/float volue(SeqList*L) float v=0; int i;for(i=1;ilen;i+)v+=L-d
37、ata i. price * L-data i.sum num;return v;)/*显示*/void output(SeqList*L)int i;printfCno,name,newnum,sum num,priceWn);for(i=1;ilen;i+)printf(%10s%12s%5d%5d%7.2fWn,L-datai.no,L-datai.name,L-datai.newnum, L-data i.sum num, L-datai. price);)/*菜单*/ void menu()printf(1录入信息 Wn);printf(2借书 Wn);printf(3估价 Wn);
38、printf(4输出 Wn);printfCO退出 Wn);)void main()SeqList* L;DataType x;int sei;float v;L=(SeqList*)malloc(sizeof(SeqList);L-len=0; do menu();printfCinput your selectWn);scanf(%d,&sel); switch(sel)case 1:input(L);break;case 2:printf(input noWn);scanf(%s,x.no);brow(L.x);break;case 3:v=volue(L);printfCthe sum
39、 value is%10.2fWn,v);break;case 4:output(L);break;)while(sel!=O);)3. /*设有两个整型顺序表L1, L2,其元素值递增有序存放,请定义该顺序表的元素类型及表类型(2分);设计以下自定义函数:(1)录入顺序表中所有元素的值。(3分)(2)将顺序表L1, L2合并为到另外一个顺序表L3中,L3中的元素非递减有序排列。(8分)(3)输出顺序表中元素的值。(3分)主函数通过调用以上函数实现两个表的合并并显示合并结果。(4分)*/#include #include #define MAXLEN 100typedef struct int
40、 dataMAXLEN+1;int len;SeqList;/*录入*/void input(SeqList*L) int i;printfCinput the lengthWn);scanf(%d,&L-len);printfCinput elementWn);for(i=1;ilen;i+)scanf(%d,&L-data i);/*合并*/void merge(SeqList* A, SeqList* B, SeqList *C) int i,j,k;i=1;j=1;k=1;while(ilen & jlen)if(A-data idata j)C-data k+=A-data i+;e
41、lse C-data k+=B-data j+;while(ilen)C-data k+=A-data i+;while(jlen)C-data k+=B-data j+;C-len=k-1;/*显示*/void output(SeqList*L)int i;for(i=1;ilen;i+)printfC %5dWn, L-data i);)/*菜单*/void menu()printf(1表1录入 Wn);printf(2表2录入 Wn);printf(3合并 Wn);printf(4输出合并后的表Wn);printfCO退出 Wn);)void main()SeqList* L1,*L2,*L3;int sei;L1=(SeqList*)m alloc(sizeof (SeqList);L1-len=0; l-2=(SeqList*)malloc(sizeof(SeqList);L2-len=0; L3=(SeqList*)malloc(sizeof(SeqList);L3-len=0; do menu();printfCinput your selectWn);scanf(%d,&sel);switch(sel)case 1: printfCinput listl Wn);input(L1);break;case 2: printfCinput
限制150内