线性表的操作上机实验.docx
- 文档编号:29910097
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:12
- 大小:206.47KB
线性表的操作上机实验.docx
《线性表的操作上机实验.docx》由会员分享,可在线阅读,更多相关《线性表的操作上机实验.docx(12页珍藏版)》请在冰豆网上搜索。
线性表的操作上机实验
实验一线性表的基本操作
一、上机目的:
1、掌握使用TurboC2.0,或VC上机调试线性表的基本方法;
2、掌握顺序表的存储结构形式及其描述和基本运算的实现。
3、熟练掌握动态链表结构及有关算法的设计。
4、掌握线性表的基本操作:
插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的算法思想和实现。
二、上机要求:
1、认真阅读和掌握本上机的程序。
2、上机运行本程序。
3、保存和打印出程序的运行结果,并结合程序进行分析。
4、写出头插法、尾插法建单链表的程序,上机运行。
三、上机内容:
线性表(包括顺序结构、链式结构)基本操作:
创建、插入、删除、查找等操作的实现;两个有序(包括顺序结构、链式结构)合并成一个有序表。
四、实验代码(详细设计):
#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;//使q指向表尾
for(inti=1;i<=n;i++)
{p=newLNode;
cin>>p->data;
p->next=NULL;
q->next=p;
q=p;}
}
StatusGetElem(LinkListL,inti,ElemType&e)//取第i个元素
{LinkListp=L->next;
intj=1;
while(p&&j
{p=p->next;
++j;}
if(!
p||j>i)returnerror;//第i个元素不存在
e=p->data;
returnok;
}
StatusLinkInsert(LinkList&L,inti,ElemTypee)//插入
{LinkListp=L;
intj=0;
while(p&&j {p=p->next; ++j;}//寻找第i-1个结点 if(! p||j>i-1) returnerror;//i小于1或者大于表长加1 LinkLists=newLNode;//生成新结点 s->data=e; s->next=p->next;//插入L中 p->next=s; returnok; } StatusListDelete(LinkList&L,inti,ElemType&e)//删除 {LinkListp=L; LinkListq; intj=0; while(p->next&&j {//寻找第i个结点,并令p指向其前驱 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)