第三章顺序表第四章链表题库.docx
- 文档编号:2975005
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:17
- 大小:24.32KB
第三章顺序表第四章链表题库.docx
《第三章顺序表第四章链表题库.docx》由会员分享,可在线阅读,更多相关《第三章顺序表第四章链表题库.docx(17页珍藏版)》请在冰豆网上搜索。
第三章顺序表第四章链表题库
第三章顺序表
一、填空
1. 若线性表最常用的操作是存取第i个元素及其前驱元素的值,则采用()存储结构最节省运算时间。
2.顺序存储结构的线性表中所有元素的地址()连续。
3.顺序存储结构的线性表其物理结构与逻辑结构是()的。
4.在具有n个元素的顺序存储结构的线性表任意一个位置中插入一个元素,在等概率条件下,平均需要移动()个元素。
5.在具有n个元素的顺序存储结构的线性表任意一个位置中删除一个元素,在等概率条件下,平均需要移动()个元素。
6.在具有n个元素的顺序存储结构的线性表中查找某个元素,平均需要比较()次。
7.当线性表的元素基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中第i个元素时,应采用()存储结构。
8.顺序存储结构的线性表中,插入或删除某个元素时,元素移动的次数与其位置()关。
(填有或无)。
9.顺序存储结构的线性表中,访问第i个元素与其位置()关。
(填有或无)。
10.在具有n个元素的顺序存储结构的线性表中要访问第i个元素的时间复杂度是()。
11.在顺序表L中的i个位置插入某个元素x,正常插入时,i位置以及i位置以后的元素需要后移,首先后移的是()个元素。
12.要删除顺序表L中的i位置的元素x,正常删除时,i位置以后的元素需要前移,首先前移的是()元素。
13.若顺序表中的元素是从1位置开始存放的,要在具有n个元素的顺序表中插入一个元素,合法的插入位置是()。
14.若顺序表中的元素是从1位置开始存放的,要删除具有n个元素的顺序表中某个元素,合法的删除位置是()。
15.在具有n个元素的顺序存储结构的线性表中删除某个元素的时间复杂度是()。
16.在具有n个元素的顺序存储结构的线性表中插入某个元素的时间复杂度是()。
17.在具有n个元素的顺序存储结构的线性表中要访问第i个元素的后继结点的时间复杂度是()。
18.在具有n个元素的顺序存储结构的线性表中,若给定的是某个元素的关键字值,要访问该元素的其它信息的时间复杂度是()。
19.在顺序表中查找某个元素时,需要将当前元素与要找的元素进行若干次的比较,算法经常用while循环来实现,while里面的条件是没找完且()。
20.在顺序表中查找某个元素时,需要将当前元素与要找的元素进行若干次的比较,算法经常用while循环来实现,while里面的条件是()且没找到。
21.如果要将两个升序排列的整型顺序表a中的元素合并到b中(b的空间足够大),合并后表中元素依然升序排列,可以通过多次调用查找函数查找插入位置,再调用()函数来实现插入。
22.若要将一个整型的顺序表拆分为一个存放正数,另一个存放非正数的两个顺序表,存放正数的顺序表用原来的表,时间复杂度为()。
23.顺序表中查找某个元素时,从前到后查找与从后到前查找的时间复杂度()同。
二、简答题
1.下列算法完成在顺序表SeqL的第i个位置插入元素x,正常插入返回1,否则返回0或-1,请在空的下划线上填写合适的内容完成该算法。
intseq_ins(SeqList*SeqL,inti,DataTypex)
{intj;
if()/*表满*/
{printf("thelistisfull\n");
return0;
}
elseif(i<1||i>SeqL->len+1)/*位置不对*/
{printf("thepositionisinvalid\n");
return-1;
}
else/*正常插入*/
{for(j=SeqL->len;j>=i;j--)
/*元素后移*/
/*插入元素*/
(SeqL->len)++;/*表长加1*/
}
}
2.下列算法完成删除顺序表SeqL的第i个元素,元素类型为DataType,其值通过参数px返回,请在空的下划线上填写合适的内容完成该算法。
intseq_del(SeqList*SeqL,inti,)
{intj;
if(SeqL->len==0)/*表空*/
{printf("thelistisempty\n");return0;}
elseif()/*位置不对*/
{printf("\nthepositionisinvalid");return-1;}
else/*正常删除*/
{*px=SeqL->data[i];/*删除元素通过参数px返回*/
for(j=i+1;j<=SeqL->len;j++)
;/*元素前移*/
;/*表长减1*/
return1;
}
}
3.简述什么是顺序存储结构,顺序存储结构的优缺点都有哪些。
4.设有一整型顺序表L,元素从位置1开始存放,下列算法实现将以第一个元素为基准,将其放置在表中合适的位置,使得其前面的元素都比它小,后面的元素均大于等于该元素。
请在空的下划线上填写合适的内容完成该算法。
voidpart(SeqList*L)
{;/*循环变量声明*/
intx;
;/*将第一个元素置入x中*/
for(i=2;i<=L->len;i++)
if()/*当前元素小于基准元素*/
{L->data[0]=L->data[i];/*当前元素暂存在0位置*/
for(j=i-1;j>=1;j--)/*当前元素前面所有元素后移*/
L->data[j+1]=L->data[j];
/*当前元素从0位置移到最前面*/
}
}
5.设有一整型顺序表L,元素从位置1开始存放,下列算法实现将以第一个元素为基准,将其放置在表中合适的位置,使得其前面的元素都比它小,后面的元素均大于等于该元素。
请在空的下划线上填写合适的内容完成该算法。
voidpart(SeqList*L)
{inti,j;
i=1;/*i指向第一个位置*/
j=L->len;/*j指向最后一个位置*/
L->data[0]=L->data[1];/*将基准元素暂存在0位置*/
while()
{while((L->data[j]>=L->data[0])&&(i if(i {L->data[i]=L->data[j]; i++; } while((L->data[i]<=L->data[0])&&(i if(i { } } /*将基准元素放在i位置*/ } 四、完整程序设计 1.在顺序存储结构的职工工资表中,职工工资信息包括: 职工号(no)、姓名(name)、职称(pro)、工资(sal)等四项信息,请编写一完整的程序,实现以下功能: (1)创建信息表: 从键盘读入所有职工的信息。 (3分) (2)删除: 给定职工号,删除该职工的信息。 (6分) (3)修改: 对职称为“教授”的职工工资加100。 (4分) (4)在显示器(屏幕)上显示所有职工的各项信息。 (3分) (5)主程序以菜单的方式调用以上功能。 (4分) 元素类型及顺序表类型定义如下: typedefstruct {charno[8],name[10],pro[6]; floatsal; }DataType; typedefstruct {DataTypedata[MAXLEN+1]; intlen; }SeqList; 2.图书管每本图书包含: 书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)四项信息,编写完整程序通过顺序表实现: (1)初始化: 录入现有的所有图书的四项信息。 (3分) (2)借书: 每本书每次只能借一本,如果库中有该书,则允许借阅并使该书的现存量减1,否则给出相应提示信息。 (4分) (3)价值估算: 统计库中所有书的价钱。 价钱为所有书的单价乘以库存量的累加和。 (4分) (4)显示: 显示图书管所有藏书信息。 (3分) (5)主程序以菜单的方式调用以上功能。 (4分) 元素类型及顺序表类型定义2分。 3.设有两个整型顺序表L1,L2,其元素值递增有序存放,请定义该顺序表的元素类型及表类型(2分);设计以下自定义函数: (1)录入顺序表中所有元素的值。 (3分) (2)将顺序表L1,L2合并为到另外一个顺序表L3中,L3中的元素非递减有序排列。 (8分) (3)输出顺序表中元素的值。 (3分) 主函数通过调用以上函数实现两个表的合并并显示合并结果。 (4分) 4.有一个职工基本信息管理,职工信息包含: 职工号、姓名、性别;编写完整程序,实现如下功能: (1)录入函数input: 从键盘读入职工信息。 (3分) (2)删除函数delete: 给定职工号,删除该职工的信息。 (5分) (3)插入函数insert: 假定表中职工信息按职工号升序排列,任意给定一职工信息,使得插入后依然有序。 (6分) 主函数以菜单形式调用以上功能,类型定义2分,主函数4分。 5.有一个学生信息包含: 学号no〈主关键字〉;姓名name;英语成绩score。 定义学生信息类型DataType及顺序表类型SeqList; (1)录入函数input: 从键盘读入学生信息。 (3分) (2)查找函数search: 任意给定一个学号,查找其英语成绩,将其成绩通过函数返回,若找不到,返回-1。 (5分) (3)插入函数insert: 假定表中学生信息按学号升序排列,任意给定一学生信息,使得插入后依然有序。 (6分) 主函数以菜单形式调用以上功能,类型定义2分,主函数4分。 6.设有一个超市的库存情况如下表1所示: 表1超市商品信息 商品编号 商品名称 价格 库存量 作业本 1.2 20 铅笔 1.0 10 钢笔 0.5 30 铅笔刀 10 5 编写完整程序实现: (1)从键盘输入货物信息并将其放在顺序表中。 (4分)。 (2)假定商品信息按货号升序存放,任意插入一商品信息,要求按货号有序插入到表中。 (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: 从键盘读
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 顺序 第四 章链表 题库