数据结构单链表插入、删除和修改实验报告
一、实验目的
1.理解数据结构中带头结点单链表的定义和逻辑图表示方法。
2.掌握单链表中结点结构的JAVA描述。
3.熟练掌握单链表的插入、删除和查询算法的设计与JAVA实现。
4.熟练掌握简单的演示菜单与人机交互设计方法。
二、实验内容
1. 编制一个演示单链表插入、删除、查找等操作的程序。
三、实验步骤
1.需求分析
本演示程序用JAVA编写,完成单链表的生成,任意位置的插入、删除,以及确定某一元素在单链表中的位置。
① 输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。在所有输入中,元素的值都是整数。
② 输出的形式:在所有三种操作中都显示操作是否正确以及操作后单链表的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。
③ 程序所能达到的功能:完成单链表的生成(通过插入操作)、插入、删除、查找操作。
④ 测试数据:
A. 插入操作中依次输入11,12,13,14,15,16,生成一个单链表
B. 查找操作中依次输入12,15,22返回这3个元素在单链表中的位置
C. 删除操作中依次输入2,5,删除位于2和5的元素
2.概要设计
1)为了实现上述程序功能,需要定义单链表的抽象数据类型:
ADT LinkList {
数据对象:D={ai|ai∈IntegerSet,i=0,1,2,…,n,n≥0}
数据关系:R={|ai,ai+1 ∈D}
基本操作:
(1)insert
初始化状态:单链表可以不为空集;操作结果:插入一个空的单链表L。
(2)decelt
操作结果:删除已有的单链表的某些结点。
(3)display
操作结果:将上述输入的元素进行排列显示。
(4)modify
操作结果:将上述输入的某些元素进行修改。
(5)save
操作结果:对上述所有元素进行保存。
(6)load
操作结果:对上述元素进行重新装载。
}
2)本程序包含7个函数:
① 主函数main()
② 保存单链表函数save()
③ 重载操作菜单函数load()
④ 显示单链表内容函数display ()
⑤ 插入元素函数insert ()
⑥ 删除元素函数decelt ()
⑦ 修改元素函数modify()
各函数间关系如下:
3.详细设计
实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。
1) 结点类型和指针类型
typedef struct node {
int data;
struct node *next;
}Node,*singleLIST.java;
2) 单链表的基本操作
为了方便,在单链表中设头结点,其data域没有意义。
bool insert(singleLIST) (伪码算法)
bool modify(singleLIST) (伪码算法)
void delect(singleLIST)
(伪码算法)
void display()
(伪码算法)
3) 其他模块伪码算法
4.调试分析
(略)
5.使用说明
程序名为 ,运行环境为Windows。程序执行后显示
========================
0----EXIT
1----INSERT
2----DELETE
3----DISPLAY
4----MODIFY
5----EXIST
=======================
SELECT:
在select后输入数字选择执行不同的功能。要求首先输入足够多的插入元素,才可以进行其他的操作。每执行一次功能,就会显示执行的结果(正确或错误)以及执行后单链表的内容。
选择5:退出程序
选择1:显示"INSERT =" ,
要求输入要插入的位置和元素的值(都是整数)。
选择2:显示"DELETE =" ,
要求输入要删除元素的位置,执行成功后返回元素的值。
选择3:显示"MODIFY = " ,
选择要修改的对象,执行成功后返回新的元素值。
选择4:显示"DIAPLAY= "
显示所有单链表中的元素,自动进行排序。
1