1、第三章顺序表第四章链表题库第三章 顺序表一、填空1若线性表最常用的操作是存取第 i 个元素及其前驱元素的值,则采用( )存储结构最节省运算时间。2顺序存储结构的线性表中所有元素的地址( )连续。 3顺序存储结构的线性表其物理结构与逻辑结构是( )的。4在具有n个元素的顺序存储结构的线性表任意一个位置中插入一个元素,在等概率条件下,平均需要移动( )个元素。5在具有n个元素的顺序存储结构的线性表任意一个位置中删除一个元素,在等概率条件下,平均需要移动( )个元素。6在具有n个元素的顺序存储结构的线性表中查找某个元素,平均需要比较( )次。7当线性表的元素基本稳定,且很少进行插入和删除操作,但要求
2、以最快的速度存取线性表中第i个元素时,应采用( )存储结构。8顺序存储结构的线性表中,插入或删除某个元素时,元素移动的次数与其位置( )关。(填有或无)。9顺序存储结构的线性表中,访问第i个元素与其位置( )关。(填有或无)。10在具有n个元素的顺序存储结构的线性表中要访问第i个元素的时间复杂度是( )。11在顺序表L中的i个位置插入某个元素x,正常插入时,i位置以及i位置以后的元素需要后移,首先后移的是( )个元素。12要删除顺序表L中的i位置的元素x,正常删除时,i位置以后的元素需要前移,首先前移的是( )元素。13若顺序表中的元素是从1位置开始存放的,要在具有n个元素的顺序表中插入一个元
3、素,合法的插入位置是( )。14若顺序表中的元素是从1位置开始存放的,要删除具有n个元素的顺序表中某个元素,合法的删除位置是( )。15在具有n个元素的顺序存储结构的线性表中删除某个元素的时间复杂度是( )。16在具有n个元素的顺序存储结构的线性表中插入某个元素的时间复杂度是( )。17在具有n个元素的顺序存储结构的线性表中要访问第i个元素的后继结点的时间复杂度是( )。18在具有n个元素的顺序存储结构的线性表中,若给定的是某个元素的关键字值,要访问该元素的其它信息的时间复杂度是( )。19在顺序表中查找某个元素时,需要将当前元素与要找的元素进行若干次的比较,算法经常用while循环来实现,w
4、hile里面的条件是没找完且( )。20在顺序表中查找某个元素时,需要将当前元素与要找的元素进行若干次的比较,算法经常用while循环来实现,while里面的条件是( )且没找到。21如果要将两个升序排列的整型顺序表a中的元素合并到b中(b的空间足够大),合并后表中元素依然升序排列,可以通过多次调用查找函数查找插入位置,再调用( )函数来实现插入。22若要将一个整型的顺序表拆分为一个存放正数,另一个存放非正数的两个顺序表,存放正数的顺序表用原来的表,时间复杂度为( )。23顺序表中查找某个元素时,从前到后查找与从后到前查找的时间复杂度( )同。二、简答题1.下列算法完成在顺序表SeqL的第i个
5、位置插入元素x,正常插入返回1,否则返回0或-1,请在空的下划线上填写合适的内容完成该算法。int seq_ins(SeqList *SeqL,int i, DataType x) int j; if ( ) /*表满*/ printf(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-len)+; /*表长
6、加1*/ 2.下列算法完成删除顺序表SeqL的第i个元素,元素类型为DataType,其值通过参数px返回,请在空的下划线上填写合适的内容完成该算法。 int seq_del (SeqList * SeqL,int i, ) int j ; if (SeqL-len=0) /*表空*/ printf(the list is emptyn);return 0; elseif( ) /*位置不对*/ printf(n the position is invalid); return -1; else /*正常删除*/ *px=SeqL-datai; /*删除元素通过参数px 返回*/ for (j
7、=i+1;jlen;j+) ; /*元素前移*/ ; /*表长减1*/ return 1; 3.简述什么是顺序存储结构,顺序存储结构的优缺点都有哪些。4. 设有一整型顺序表L,元素从位置1开始存放,下列算法实现将以第一个元素为基准,将其放置在表中合适的位置,使得其前面的元素都比它小,后面的元素均大于等于该元素。请在空的下划线上填写合适的内容完成该算法。void part(SeqList *L) ; /*循环变量声明*/ int x; ; /*将第一个元素置入x中*/ for(i=2;ilen;i+) if( ) /*当前元素小于基准元素*/ L-data0=L-datai; /*当前元素暂存在
8、0位置*/ for(j=i-1;j=1;j-) /*当前元素前面所有元素后移*/ L-dataj+1=L-dataj; /*当前元素从0位置移到最前面*/ 5. 设有一整型顺序表L,元素从位置1开始存放,下列算法实现将以第一个元素为基准,将其放置在表中合适的位置,使得其前面的元素都比它小,后面的元素均大于等于该元素。请在空的下划线上填写合适的内容完成该算法。void part(SeqList *L) int i,j; i=1; /*i指向第一个位置*/j=L-len; /*j指向最后一个位置*/ L-data0= L-data 1; /*将基准元素暂存在0位置*/ while( ) while
9、(L-data j= L-data 0)&(ij) j-; /*j位置元素大于基准元素且ij 时j前移*/ if (idata i= L-data j;i+; while(L-data idata 0)&(ij) i+;/*i位置元素小于基准元素且ij 时i后移*/ if (ij) /*将基准元素放在i位置*/四、完整程序设计1. 在顺序存储结构的职工工资表中,职工工资信息包括:职工号(no)、姓名(name)、职称(pro)、工资(sal)等四项信息,请编写一完整的程序,实现以下功能:(1)创建信息表:从键盘读入所有职工的信息。(3分)(2)删除:给定职工号,删除该职工的信息。(6分)(3)
10、修改:对职称为“教授”的职工工资加100。(4分)(4)在显示器(屏幕)上显示所有职工的各项信息。(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
11、)借书:每本书每次只能借一本,如果库中有该书,则允许借阅并使该书的现存量减1,否则给出相应提示信息。(4分)(3)价值估算:统计库中所有书的价钱。价钱为所有书的单价乘以库存量的累加和。(4分)(4)显示:显示图书管所有藏书信息。(3分)(5)主程序以菜单的方式调用以上功能。(4分)元素类型及顺序表类型定义2分。3.设有两个整型顺序表L1,L2,其元素值递增有序存放,请定义该顺序表的元素类型及表类型(2分);设计以下自定义函数:(1)录入顺序表中所有元素的值。(3分)(2)将顺序表L1,L2合并为到另外一个顺序表L3中,L3中的元素非递减有序排列。(8分)(3)输出顺序表中元素的值。(3分)主函
12、数通过调用以上函数实现两个表的合并并显示合并结果。(4分)4.有一个职工基本信息管理,职工信息包含:职工号、姓名、性别;编写完整程序,实现如下功能: (1)录入函数input:从键盘读入职工信息。(3分) (2)删除函数delete:给定职工号,删除该职工的信息。(5分) (3)插入函数insert:假定表中职工信息按职工号升序排列,任意给定一职工信息,使得插入后依然有序。(6分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。5. 有一个学生信息包含:学号no主关键字;姓名name;英语成绩score。定义学生信息类型DataType及顺序表类型SeqList;(1)录入函数inpu
13、t:从键盘读入学生信息。(3分)(2)查找函数search:任意给定一个学号,查找其英语成绩,将其成绩通过函数返回,若找不到,返回-1。(5分) (3)插入函数insert:假定表中学生信息按学号升序排列,任意给定一学生信息,使得插入后依然有序。(6分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。6. 设有一个超市的库存情况如下表1所示: 表1 超市商品信息商品编号商品名称价格库存量作业本1.220铅笔1.010钢笔0.530铅笔刀105 编写完整程序实现: (1) 从键盘输入货物信息并将其放在顺序表中。(4分)。(2)假定商品信息按货号升序存放,任意插入一商品信息,要求按货号有序
14、插入到表中。(6分)(3)任意给定一个商品编号,查找其商品名称、价格和库存量,如果存在该商品输出并返回1,否则返回0。(4分) 主函数以菜单形式调用以上功能,类型定义2分,主函数4分。7.有一个房产信息管理系统,房产信息包含:门牌号、户主、电话号码、面积。编程实现如下功能(要求用顺序表存储):(1) 编写一个初始化函数input:从键盘读入房产基本信息。(3分) (2) 编写一个取暖费用计算函数cost:任意给定一门牌号,根据门牌号进行查询,找到时,返回应缴纳取暖费,否则返回0,并且给出提示信息。计算公式为:每户应缴纳费用=面积*4.5元/m2。(4分)(3)编写一排序函数sort:按门牌号升序排列。(4分)(4)编写一个函数output:输出所有面积低于90平方米住户的名称。(3分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。 8. 有一个学生信息包含:学号no主关键字;姓名name;英语成绩english,计算机成绩comp,数学成绩math。定义学生信息类型DataType及顺序表类型SeqList;(1)录入基本信息函数input:从键盘读
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1