- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
武汉理工大学实验报告
《数据结构与算法》上机实验
学院(系): 信息工程学院
专业班级: 信息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
您可能关注的文档
最近下载
- 当代中国政府与政治全套教学课件汇总.pptx VIP
- 2025年全国普通高等学校体育单招真题英语试卷(原卷+ 完整版2025.pdf VIP
- 2024年全国普通高等学校运动训练、民族传统体育专业单招考试数学试卷.pdf VIP
- 2025广东惠州市生态环境局博罗分局和博罗县污染防治攻坚战总指挥部办公室招聘编外人员38人备考试题及答案解析.docx VIP
- 2025广东惠州市生态环境局博罗分局和博罗县污染防治攻坚战总指挥部办公室招聘编外人员38人备考题库及答案解析.docx VIP
- 华荣KJG-口/口Y系列说明书(和利时保护器).doc VIP
- 医疗器械 质量手册.doc VIP
- SYB第八步(3)-制定销售和成本计划.ppt VIP
- 2025广东惠州市生态环境局博罗分局和博罗县污染防治攻坚战总指挥部办公室招聘编外人员38人考试备考试题及答案解析.docx VIP
- 2024年浙江省嵊泗县人民医院公开招聘护理工作人员试题带答案详解.docx VIP
文档评论(0)