一、题目
编制一个演示单链表插入、删除、查找等操作的程序。
二、需求分析
本程序在Windows环境下用用Visual C++编写,完成单链表的生成,任意位置的插入、删除,以及确定某一元素在单链表中的位置。
① 输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。在所有输入中,元素的值都是整数
② 输出的形式:在所有三种操作中都显示操作是否正确以及操作后单链表的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。
③ 程序所能达到的功能:完成单链表的生成(通过插入操作)、插入、删除、查找操作 ④ 测试数据:
A. 插入操作中依次输入11,12,13,14,15,16,生成一个单链表
B. 查找操作中依次输入12,15,22返回这3个元素在单链表中的位置
C. 删除操作中依次输入2,5,删除位于2和5的元素
二、概要设计
1)为了实现上述程序功能,需要定义单链表的抽象数据类型:
ADT LinkList {
数据对象:D={ai|ai∈IntegerSet,i=0,1,2,…,n,n≥0}
数据关系:R={<ai,ai+1>|ai,ai+1 ∈D}
基本操作:
InitLinkList(&L)
操作结果:构造一个空的单链表L.
InsLinkList(&L,pos,e)
初始条件:单链表L已存在
操作结果:将元素e插入到单链表L的pos位置
DelLinkList(&L,pos,&e)
初始条件:单链表L已存在
操作结果:将单链表L中pos位置的元素删除,元素值置入e中返回
LocLinkList(L,e)
初始条件:单链表L依存在
操作结果:单链表L中查找是否元素e,若存在,返回元素在表中的位
置;若不存在,返回-1.
2)本程序包含7个函数:
① 主函数main()
② 初始化单链表函数InitLinkList()
③ 显示操作菜单函数menu()
④ 显示单链表内容函数dispLinkList()
⑤ 插入元素函数InsLinkList()
⑥ 删除元素函数DelLinkList()
⑦ 查找元素函数LocLinkList()
各函数间关系如下:
三、详细设计
为了实现概要设计中定义的所有的数据类型,对每个操作伪码算法;对主程序和其他模块也都需要写出伪码算法;画出系统结构图
1) 结点类型和指针类型
Type int ElemType
typedef struct Node {
ElemType data;
struct node *next;
}Node,*LinkListl;
2) 为了方便,在单链表中设头结点,其data域没有意义
单链表的基本操作如下:
void InitLinkList(LinkList &L)