线性表 链表实验报告链表线性表.docx
- 文档编号:5330010
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:8
- 大小:15.99KB
线性表 链表实验报告链表线性表.docx
《线性表 链表实验报告链表线性表.docx》由会员分享,可在线阅读,更多相关《线性表 链表实验报告链表线性表.docx(8页珍藏版)》请在冰豆网上搜索。
线性表链表实验报告链表线性表
[线性表链表实验报告]链表线性表
实验一:
线性表运算的实现
班级姓名学号
一、实验预备知识
1复习C++中编写函数的相关内容。
2复习如何用主函数将多个函数连在一起构成一个C++完整程序。
二、实验目的
1掌握线性表的顺序和链式存储结构
2熟练运用线性表在顺序存储方式下的初始化、创建、输出、插入和删除运算
3熟练运用线性表在链式存储方式下的创建、输出、插入和删除运算
三、实验要求
1编写初始化并创建线性表和输出线性表的算法。
2编写对线性表插入和删除运算算法,要判断位置的合法性和溢出问题。
3编写一个主函数,将上面函数连在一起,构成一个完整的程序。
4将实验源程序调试并运行,写出输入、输出结果,并对结果进行分析。
四、实验步骤
◇顺序表实验内容:
1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。
2.初始化并建立顺序表。
3.编写顺序表输出算法。
(内存中开辟的单元数为8)
4.依次插入3,21,15三个数,分别插入在第4,6和2位置,每插入一次都要输出一次顺序表。
5.删除第5,第3和第12个位置上的元素,每删除一个元素都要输出一次顺序表。
◇单链表实验内容:
1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。
2.建立一个带表头结点的单链表(前插入法和尾插入法都可以)。
3.编写单链表输出算法。
4.依次插入3,21,15三个数,分别插入在第4,6和12位置,每插入一次都要输出一次单链表。
5.删除第5,第3和第12个位置上的元素,每删除一个元素都要输出一次单链表。
五、实验程序
◇顺序表实验
//LinkList.h
#defineMAXSIZE8
typedefintDataType;
typedefstruct{
DataTypedata[MAXSIZE];
intlast;
}Seqlist;
voidcreat_seqlist(Seqlist&s);
voiddisplay_seqlist(Seqlist&s);
intinsert_seqlist(Seqlist&s,inti,DataTypex);
intdelet_seqlist(Seqlist&s,inti);
//LinkList.cpp
#include
#include”Seqlist.h”
voidcreat_seqlist(Seqlist&s)
{
intx,i=0;
cout
cin>>x;
while(x!
=-1){
s.data[i]=x;
cin>>x;
i++;
}
s.last=i-1;
}
voiddisplay_seqlist(Seqlist&s)
{
inti;
cout
for(i=0;i
cout
cout
}
intinsert_seqlist(Seqlist&s,inti,DataTypex)
{
intj;
if(s.last==MAXSIZE-1){
}
couts.last+2){cout=i-1;j--)s.data[j+1]=s.data[j];s.data[i-1]=x;s.last++;return1;
intdelet_seqlist(Seqlist&s,inti)
{
intj;
if(is.last+1){
cout
return-1;
}
for(j=i;j
s.data[j-1]=s.data[j];
s.last--;
return1;
}
//main.cpp
#include
#include”Seqlist.h”
intmain()
{
intx,d,s;
Seqlists_list;
creat_seqlist(s_list);
cout>d;cout>x;s=insert_seqlist(s_list,d,x);if(s==1){cout>d;s=delet_seqlist(s_list,d);
}
if(s==1){cout
运行结果:
请输入数据(以输入-1结束)
12257421938-1
顺序表为:
12257421938
插入操作
请输入插入的位置:
4
请输入要插入的数据:
3
插入后的顺序表为:
122573421938
请输入插入的位置:
6
请输入要插入的数据:
21
插入后的顺序表为:
12257342211938
请输入插入的位置:
2
请输入要插入的数据:
15
表满!
删除操作
请输入删除元素的位置:
5
删除后的顺序表为:
122573211938
请输入删除元素的位置:
3
删除后的顺序表为:
12253211938
请输入删除元素的位置:
12
不存在该元素!
Pressanykeytocontinue
◇单链表实验
//LinkList.h
typedefintDataType;
typedefstructNode{
DataTypedata;
structNode*next;
}LNode,*LinkList;
voidCreat_LinkList(LinkList&L);//创建链表
voidShow_LinkList(LinkList&L);//显示数据
LNode*Get_LinkList(LinkList&L,inti);//获得第i个结点的地址intInsert_linklist(LinkList&L,inti,DataTypex);//插入结点
intDelete_LinkList(LinkList&L,inti);//删除结点
//LinkList.cpp
#include
#include”LinkList.h”
voidCreat_LinkList(LinkList&L)
{
LNode*s;
L=NULL;
s=newLNode;
s->next=L;
L=s;
intx;
}
//头插法创建带头结点的链表cout>x;while(x!
=-1){s=newLNode;s->next=L;L->data=x;L=s;cin>>x;}
voidShow_LinkList(LinkList&L)
{
LNode*p;
p=L->next;
while(p!
=NULL){
coutdata
p=p->next;//显示数据
}
cout
}
LNode*Get_LinkList(LinkList&L,inti)
{
intj=1;
LNode*q;
q=L->next;
while(q!
=NULL&&j
q=q->next;
j++;
}
returnq;
}
//获得第i个结点的地址
intInsert_LinkList(LinkList&L,inti,DataTypex)//插入结点{
LNode*p,*s;
p=Get_LinkList(L,i-1);
if(p==NULL){
}
coutdata=x;s->next=p->next;p->next=s;return1;}
intDelete_LinkList(LinkList&L,inti)
{
LNode*p,*s;
p=Get_LinkList(L,i-1);
if(p==NULL){
//删除结点coutnext==NULL){cout
return0;
}
else{
s=p->next;
p->next=s->next;deletes;
return1;
}
}
//main.cpp
#include#include”LinkList.h”
intmain()
{
intx,d,s;
LinkListH;
Creat_LinkList(H);Show_LinkList(H);
}cout>d;cout>x;s=Insert_LinkList(H,d,x);if(s==1){cout>d;s=Delete_LinkList(H,d);if(s==1){cout
运行结果:
请输入数据(以输入-1结束)12257421938-1单链表为:
38194272512
插入操作
请输入插入的位置:
4请输入要插入的数据:
3插入后的单链表为:
381942372512请输入插入的位置:
6请输入要插入的数据:
21插入后的单链表为:
38194237212512请输入插入的位置:
12请输入要插入的数据:
15插入位置错误!
删除操作
请输入删除元素的位置:
5删除后的单链表为:
3819423212512请输入删除元素的位置:
3删除后的单链表为:
38193212512
请输入删除元素的位置:
12插入位置的前驱结点不存在!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性表 链表实验报告链表线性表 线性 实验 报告