实验一线性表的插入与删除Word格式文档下载.docx
- 文档编号:20836752
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:12
- 大小:69.57KB
实验一线性表的插入与删除Word格式文档下载.docx
《实验一线性表的插入与删除Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验一线性表的插入与删除Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
如要产生0至999之间的随机整数,只需做运算xi=INT(1000yi/m)。
其中mod(*)是模运算,INT(*)是取整函数。
(2)线性表的插入与删除
在本实验中线性表是动态增长的。
插入一个新元素后,为了使线性表仍保持有序,必须要找到新元素应插入的位置。
实际上这是一个插入排序的问题。
为了要将新元素插入到一个有序的线性表中,可以从原有序表的最后一个元素开始,往前逐个与新元素比较,并将大于新元素的所有元素都往后移动一个位置,直到找到新元素应插入的位置为止。
显然,插入一个新元素后,表的长度也增加了1。
现假设用一个数组L(1:
m)来存储线性表,其中m为最大容量(在本实验中为m=1000);
用一个变量n表示线性表的长度(在本实验中,其初值为n=0)。
则可以得到将新元素插入到有序线性表的算法如下。
输入:
数组L(1:
m),有序线性表L(1:
n),需插入的新元素b。
其中n<
m。
输出:
插入b后的有序线性表L(1:
n)。
要在原线性表中删除一个元素b(在本实验中,保证b在线性表中),且仍保持线性表的顺序存储结构,可以从线性表的第一个元素开始,往后逐个与新元素相比较,直到发现一个元素与新元素相等。
然后从当前位置的下一个元素开始,将后面所有元素都往前移动一个位置,直到线性表的最后一个位置为止。
显然,删除一个元素之后,线性表的长度减小了1。
其算法如下。
线性表L(1:
n),n为线性表的长度,删除的元素b(一定在线性表中)。
删除b后的线性表L(1:
在上述算法中,从线性表的第一个元素开始寻找要删除的元素b,实际上我们还可以从线性表的最后一个元素开始寻找b,其算法留给读者自行考虑。
(3)线性链表的插入排序
定义一个二列数组A(1:
1000,1:
2),其中,A(i,1)(i=1,2,…,1000)依随机数产生的顺序存放1000个数据,A(i,2)(i=1,2,…,1000)为链接指针,将1000个随机数链接成有序链表。
其插入排序的方法如下。
依次从数据文件中读入一个数据,将它按行顺序存放到数组A的第一列中,然后通过相应行的第二列将它链接到已经有序的链表中。
其过程为:
将读入的数据依次与链表中各元素进行比较,找到其应该插入的位置后,适当改变链指针,将其插入。
其算法如下:
1000个随机整数。
头指针为H的有序链表。
实验二二叉树
掌握二叉树的存储结构
1.对给定二叉树用链式链式存储结构;
利用队列与栈对二叉树进行运算。
2.按层次输出所有结点。
3.输出所有叶子结点。
4.将所有左右子树值交换。
1.分别编制实验内容中题2、3、4的三个子程序。
2.以上图所示的二叉树为例编制主程序,实现下述功能,并运行这个程序。
(1)输入二叉树用链式结构存储;
(2)调用题2的子程序,并输出结果;
(3)调用题3的子程序,并输出结果;
(4)调用题4的子程序,并输出结果;
3.自行设计一棵二叉树,重复步骤2。
4.整理程序清单与所有结果,并写出实验报告。
(1)二叉树的链式存储结构
二叉树的每一个结点i有三个域:
值域V(i),左链域L(i),右链域R(i)。
我们分别用三个一维数组表示它们,并用头指针HBT指向二叉树的根结点。
具体存储方案由读者自行考虑。
(2)按层次输出所有结点
为了达到按层次扫描结点的目的,需要设置一个容量足够大的循环队列(可以用一个首尾相接的一维数组模拟)。
初始时,将根结点序号入队。
然后每次从队列中退出一个结点序号,将此结点的值及左右链指针输出,且依次将此结点的左右链指针入队。
这个过程一直进行到队列空为止。
设循环队列数组为cq(1:
m),其头尾指针分别为front与rear,则按层次输出所有结点的算法如下:
IFHBT=0THENRETURN“THISTREEISEMPTY”
Front←m,rear←m
ADD(cq,HBT,front,rear)
WHILEfront
rearDO
{
DEL(cq,i,front,rear)
OUTPUT(L(i),V(i),R(i))
IFL(i)
0THENADD(cq,L(i),front,rear)
IFR(i)
0THENADD(cq,R(i),front,rear)
}
RETURN
在这个算法中的ADD和DEL分别为入队和退队运算的两个过程,其算法(不考虑溢出情况)如下:
ADD(cq,i,front,rear)
rear
rear+1
IFrear=m+1THENrear
1
cq(rear)
i
DEL(cq,i,front,rear)
front
front+1
IFfront=m+1THENfont
cq(front)
(3)输出所有叶子结点
叶子结点的左右指针域均为零。
因此,为了输出所有叶子结点,需要设置一个容量足够大的栈S(可以用一个一维数组模拟它,栈底在数组的第一个元素处)。
具体过程是:
从根结点开始扫描二叉树,如果扫描的当前结点的左右均为零,则输出次叶子结点;
否则将非零的右指针和左指针值推入堆栈。
然后从栈中退出一个结点序号重新进行这个过程,直至栈空为止。
IFHBT=0THENRETURN“THISTREEISEMTPY”
top
0
PUSH(S,HBT,top)
WHILEtop
0DO
POP(S,i,top)
IF(L(i)=0)and(R(i)=0)THENOUTPUTV(i)
ELSE
IFR(i)
0THENPUSH(S,R(i),top)
IFL(i)
0THENPUSH(S,L(i),top)
}
RETURN
其中PUSH和POP分别为入栈和退栈的过程,其算法由读者自行考虑。
(4)将所有左右子树值交换
这个问题的处理和输出所有叶子结点的问题很类似,只要将非叶子结点的左右指针交换即可,其算法如下:
IFHBT=0THENRETURN“THISTREEISEMPTY”
top
PUSH(S,HBT,top)
WHILEtop
0DO
{
IF(L(i)
0)or(R(i)
0)THEN
{
L(i)
R(i)
IFL(i)
实验三冒泡排序和快速排序
通过编程程序达到熟悉并掌握教材中所介绍的几种排序方法。
1)随机产生20位整数
2)输入序列,编写程序,按下列排序方法将序列从小到大排序并输出。
1.冒泡排序
2.快速排序
3)纪录每种方法比较次数和移动次数
3.实验环境
1.硬件:
PC机。
2.软件:
DOS、Windows9.x、Window2000或以上版本,TurboC2.0或以上版本。
实验四-1多媒体关系型数据库的建立
通过实验综合应用有关多媒体、关系型数据库的基本技术,使学生了解关系型数据库的概念,包括数据项定义域、约束等;
掌握SQL语言的基本语法和使用;
掌握数据库、表、视图的建立,以及多媒体数据的录入。
为一个音像店建一个多媒体数据库,存储本店职工、相关音像商品、顾客、订单等信息。
具体内容如下:
1、使用MSACCESS数据库管理系统,通过示例数据库熟悉其操作,理解关系型数据库的基本概念;
2、使用VisData建立多媒体数据库MM-shop.mdb中的基表,掌握基本SQL语言的使用;
3、在ACCESS平台上维护MM-shop.mdb,建立多个查询表(视图)。
3.实验步骤与要求
(一)、熟悉使用MSACCESS数据库管理系统
1、在ACCESS数据库管理系统中创建一个新的空数据库db1.mdb;
2、使用“设计视图”新建多个表,增加多个字段,要包含所有的数据类型,并设计各个字段的属性,如:
字段大小、格式、默认值、是否允许为空等等;
3、对自建表建立查询表,理解视图(View)的概念;
4、利用向导制作窗体,显示表内容;
5、利用向导制作报表,显示表内容;
(二)、建立多媒体数据库MM-shop.mdb
1、在ACCESS数据库管理系统中建立空白数据库MM-shop.mdb;
2、使用VisData联接MM数据源,联接到MM-shop.mdb;
4、在VisData中使用SQL语言建立以下表:
雇员、商品、客户、订单。
具体字段名称如下,字段属性自己定义。
雇员数据项:
雇员ID
姓氏
名字
头衔
雇用日期
地址
邮政编码
家庭电话
照片
备注
商品数据项:
产品ID
产品名称
类别
单价
库存量
订购量
试音
图片
客户数据项:
客户ID
公司名称
联系人姓名
联系人头衔
城市
地区
电话
传真
订单数据项:
订单ID
数量
订购日期
发货日期
5、在ACCESS数据库管理系统平台上进一步设计各个字段的唯一性、值域、格式、默认值、是否允许为空等约束条件;
6、在ACCESS数据库管理系统平台上输入示例数据,包括多媒体数据(JPG图片、MP3音频);
7、在VisData平台上采用SQL语言执行数据查询、删除、插入、更新操作。
附:
在VisData中使用SQL语言的步骤
(1)启动VisData;
(2)从菜单“文件->
打开数据库->
MicrosoftAccess”进入标准文件对话框,选择MM-shop.mdb数据库;
(3)“SQL语句”窗口中输入SQL语句,然后“执行”即可。
(三)、在ACCESS数据库管理系统平台上建立查询表(视图)
1、查找出三种最贵的商品;
2、统计某一雇员的销售额。
4.实验注意事项及说明
1、本实验第一部分主要为熟悉ACCESS数据库管理系统平台,理解关系型数据库的基本概念。
对于ACCESS本身所特有的窗体、报表、模块等功能有所了解即可;
2、本实验的第二部分为主要内容,应事先编制好相应的SQL语句,在上机实验时加以验证,并作为作业上交;
3、本实验的第三部分为主要内容,应予以重视,特别是“统计某一雇员的销售额”。
可以考虑在ACCESS的查询设计视图中使用SQL语言予以实现;
4、在输入示例数据时应注意,要输入足够的数据,特别是相关的数据,以利于查询表(视图)的建立。
例如:
在“订单”中出现的“雇员ID”一定要在“雇员”表中存在,等等。
实验四-2数据库应用系统的开发
使用MSVisualBasic等快速开发工具,建立一个对上述多媒体数据库可以进行数据显示、增加、更新、删除等操作的小型数据库应用系统。
结合实验六,使学生初步了解开发一个数据库应用系统的基本思路和方法。
在上述实验的基础上,为音像店多媒体数据库建立一个包括数据展示、数据输入、增减等基本操作的数据库应用系统。
1、使用VB建立一个单文档窗口的数据库应用系统框架;
2、为每一个数据库表建立一个数据窗口;
3、在系统框架中引入各个数据窗口。
1、启动MSVisualBasic6,选择“VB应用程序向导”,遵循向导建立一个“单文档界面”,即主窗体;
2、遵循向导,添加数据窗体;
3、对于不含有多媒体数据的数据库表,可以继续遵循向导建立多个数据窗体(要选择多种不同风格的窗体布局、绑定类型等);
4、对于含有多媒体数据的数据库表,一般不直接使用向导。
(1)当遵循向导自动生成数据窗体结束后,从菜单“工程-添加窗体”加入新窗体;
(2)手动建立数据窗体:
在窗体中加入TEXT、LABEL、DATA和OLE控件,将DATA控件关联到数据库的含有多媒体数据的表,将TEXT关联到相应表的非多媒体字段,将OLE控件关联到含有多媒体数据的字段;
(3)加COMMANDBUTTON控件,并加入相应的程序代码,实现数据的增加、更新、删除等操作;
5、在主窗体中加入菜单,将多个数据窗体联接到主窗体;
6、调试程序,直至顺利运行
1、在遵循向导增加的数据窗体后,要从菜单“工程->
引用”中添加ADO2.0Library;
2、手动生成的数据窗体的程序代码可以参考自动生成的数据窗体的程序段。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 线性 插入 删除