数据结构单链表插入删除和修改实验报告.docx
- 文档编号:11950508
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:12
- 大小:206.61KB
数据结构单链表插入删除和修改实验报告.docx
《数据结构单链表插入删除和修改实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构单链表插入删除和修改实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
数据结构单链表插入删除和修改实验报告
计算机学院
实验报告
课程名称:
数据结构
实验名称:
单链表
学生姓名:
朱孝彬
学生学号:
20110511001
实验日期:
2012
一、实验目的
1.理解数据结构中带头结点单链表的定义和逻辑图表示方法。
2.掌握单链表中结点结构的C++描述。
3.熟练掌握单链表的插入、删除和查询算法的设计与C++实现。
二、实验内容
1.编制一个演示单链表插入、删除、查找等操作的程序。
三、实验步骤
1.需求分析
本演示程序用C++6.0编写,完成单链表的生成,任意位置的插入、删除,以及确定某一元素在单链表中的位置。
①输入的形式和输入值的范围:
插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。
在所有输入中,元素的值都是整数。
②输出的形式:
在所有三种操作中都显示操作是否正确以及操作后单链表的内容。
其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。
③程序所能达到的功能:
完成单链表的生成(通过插入操作)、插入、删除、查找操作。
④测试数据:
A.插入操作中依次输入11,12,13,14,15,16,生成一个单链表
B.查找操作中依次输入12,15,22返回这3个元素在单链表中的位置
C.删除操作中依次输入2,5,删除位于2和5的元素
2.概要设计
1)为了实现上述程序功能,需要定义单链表的抽象数据类型:
(1)insert
初始化状态:
单链表可以不为空集;操作结果:
插入一个空的单链表L。
(2)decelt
操作结果:
删除已有的单链表的某些结点。
(3)display
操作结果:
将上述输入的元素进行排列显示。
(4)modify
操作结果:
将上述输入的某些元素进行修改。
(5)save
操作结果:
对上述所有元素进行保存。
(6)load
操作结果:
对上述元素进行重新装载。
3.使用说明
程序执行后显示
======================
1.单链表的创建
2.单链表的显示
3.单链表的长度
4.取第i个位置的元素
5.修改第i个位置的元素
6.插入元素到单链表里
7.删除单链表里的元素
8.合并两个单链表
9.退出系统
=======================
5.源代码:
#include
usingnamespacestd;
#definetrue1
#definefalse0
#defineok1
#defineerror0
#defineoverflow-2
typedefintStatus;
typedefintElemType;
typedefstructLNode
{ElemTypedata;
structLNode*next;
}LNode,*LinkList;
voidCreateList(LinkList&L,intn)
{LinkListp;
L=newLNode;
L->next=NULL;
LinkListq=L;
for(inti=1;i<=n;i++)
{p=newLNode;
cin>>p->data;
p->next=NULL;
q->next=p;
q=p;}
}
StatusGetElem(LinkListL,inti,ElemType&e)
{LinkListp=L->next;
intj=1;
while(p&&j
{p=p->next;
++j;}
if(!
p||j>i)returnerror;
e=p->data;
returnok;
}
StatusLinkInsert(LinkList&L,inti,ElemTypee)
{LinkListp=L;
intj=0;
while(p&&j {p=p->next; ++j;} if(! p||j>i-1) returnerror; LinkLists=newLNode; s->data=e; s->next=p->next; p->next=s; returnok; } StatusListDelete(LinkList&L,inti,ElemType&e) {LinkListp=L; LinkListq; intj=0; while(p->next&&j { p=p->next; ++j;} if(! (p->next)||j>i-1)returnerror; q=p->next; p->next=q->next; e=q->data; delete(q); returnok; } voidMergeList(LinkList&La,LinkList&Lb,LinkList&Lc) { LinkListpa,pc,pb; pa=La->next; pb=Lb->next; Lc=pc=La; while(pa&&pb) {if(pa->data<=pb->data) {pc->next=pa; pc=pa; pa=pa->next;} else {pc->next=pb; pc=pb; pb=pb->next;} } pc->next=pa? pa: pb; delete(Lb); } voidshow(LinkListL) {LinkListp; p=L->next; while(p) {cout< p=p->next;} cout< } intLength(LinkListL,inti) {i=0; LinkListp=L->next; while(p) {++i; p=p->next;} returni; } voidxiugai(LinkListL) {inti,j=1; ElemTypek; ElemTypee,m; LinkListp=L->next; cout<<"请输入要修改的元素位置(0 "; cin>>i; GetElem(L,i,e); cout<<"该位置的元素: "< cout<<"修改后的元素值: "; cin>>k; while(p&&j {p=p->next; ++j;} m=p->data; p->data=k; cout<<"修改后的单链表显示如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 单链表 插入 删除 修改 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)