《数据结构与算法》实验报告模板汇编.docx

武汉理工大学实验报告 《数据结构与算法》上机实验 学院(系): 信息工程学院 专业班级: 信息sy 1501?班 学生姓名: 徐惠玲 指导教师: 魏洪涛 实验一 线性结构的操作 实验目的 熟悉掌握链表的创建和操作,了解链表的深层含义。 二、实验内容 编写一个程序,实现顺序表的各种基本运算,并在此基础上完成以下功能:? 1)?初始化顺序表;? 2)?依次采用头插入法插入10个数字; 3)?输出顺序表L;? 4)选择想要实现的功能 5)??输出顺序表L的第n个数字; 6) 输出数字x的位置; 7)??在第n个数字位置上插入f数字; 8)?输出顺序表L;? 9)?删除L的第3个数字; 10)?输出顺序表L;? 11)?释放顺序表。 三、实验环境 硬件:PC计算机 软件:Windows XP, Microsoft Visual C++ 6.0 四、算法设计过程 4.1 题目分析 首先初始化顺序表? (1)?依次采用头插入法插入10个数字;? 输入参数的格式和合法取值范围:依次输入10个数字;?输出格式:按顺序显示这10数字。? (2)选择函数的功能,输入指定的数字实现。? (3)寻找指定元素的地址 输出格式:显示顺序表第三个元素的地址? 测试数据:顺序表第三个元素的地址 (4)?在第4个元素位置上插入元素? 输入参数的格式:在原有顺序表L第4个元素位置插入2332元素。? 输出格式:按顺序显示第4个元素位置插入f元素的顺序表。? 测试数据:依次显示出顺序表的元素。 (5)?删除第三个元素? 输入参数的格式和合法取值范围:在顺序表中删除第三个元素。? 输出格式:按顺序显示删除了第三个元素的顺序表。 ?测试数据:一次显示顺序表。 (6)计算链表的长度 输入参数的格式和合法取值范围:计算链表的长度 输出格式:显示顺序表的长度。 (7)删除链表 输入参数的格式和合法取值范围:链表的当前数据 输出格式:退出了链表的操作部分,可以退出程序 4.2 概要设计 (1)?给出所用抽象数据类型的逻辑定义。? ADTLinkList{? 数据对象:D={ai|ai∈IntegerSet,i=0,1,2,…,n,n≥0}?? 结构关系:R={ai,ai+1|ai,ai+1?∈D}?基本操作:LinkList(L)? 操作前提:L是一个未初始化的线性表。?操作结果:将L初始化为一个空的线性表。? destroy(L)?操作前提:线性表L已存在。? 操作结果:销毁线性表L。? count(L) 操作前提:线性表L已存在。 操作结果:返回L中数据元素个数。 play(L) 操作前提:线性表L已存在。 操作结果:打印表中元素。 ListInsert (L,i ,e) 操作前提:线性表L已存在,1≤i≤ListLength(L)+1。 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度+1。 detelelist(L,i, e) 操作前提:线性表L已存在且非空,1≤i≤ListLength(L)。 操作结果:删除L的第i个元素数据,并用e返回其值,L的长度—1。 search(L, i,e) 操作前提:线性表L已存在,1≤i≤ListLength(L)。 操作结果:用e返回L中第i个元素的地址。 4.3 程序流程图 流程图 五、程序及调试 5.1 每个函数的源程序 #includestdio.h #includectype.h #includemalloc.h typedef struct node{ int data; struct node *next; }listnode; typedef listnode * LinkList; LinkList creatlink(); void cutin(LinkList head); void play(LinkList head); void deletelist(LinkList head); void destroy(LinkList head); void search(LinkList head); void count(LinkList head); main(){ LinkList head; int x; head=creatlink(); play(head); while(1){ printf(你想对链表进行什么操作,请输入(加入节点1删除节点2寻找节点位置3计算节点个数4删除节点退出程序5)); scanf(%d,x); if(x==1){ cutin(head); play(head);} else if(x==2){ d

文档评论(0)

1亿VIP精品文档

相关文档