60140140袁若飞实验1线性表地基本操作及其应用Word下载.docx
- 文档编号:14546893
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:25
- 大小:134.72KB
60140140袁若飞实验1线性表地基本操作及其应用Word下载.docx
《60140140袁若飞实验1线性表地基本操作及其应用Word下载.docx》由会员分享,可在线阅读,更多相关《60140140袁若飞实验1线性表地基本操作及其应用Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
显然,线性表中每个元素最多有一个直接前驱和一个直接后继。
线性表的几种基本操作的机制有六个:
(1)初始化线性表initial_List(L)——建立线性表的初始结构,即建空表。
这也是各种结构都可能要用的运算。
(2)求表长度List_length(L)——即求表中的元素个数。
(3)按序号取元素get_element(L,i)——取出表中序号为i的元素。
(4)按值查询List_locate(L,x)——取出指定值为x的元素,若存在该元素,则返回其地址;
否则,返回一个能指示其不存在的地址值或标记。
(5)插入元素List_insert(L,i,x)——在表L的第i个位置上插入值为x的元素。
显然,若表中的元素个数为n,则插入序号i应满足1<
=i<
=n+1。
(6)删除元素List_delete(L,i)——删除表L中序号为i的元素,显然,待删除元素的序号应满足1<
=n。
2、掌握线性表的逻辑结构。
3、掌握线性表的链式存储结构。
4、熟练掌握线性表的插入、删除等操作。
四、实验容
题目一:
顺序表的基本操作
[问题描述]
实现顺序表的建立、求长度,取元素、修改元素、插入、删除等基本操作。
[基本要求]
(1)依次从键盘读入数据,建立顺序表;
(2)输出顺序表中的数据元素;
(3)求顺序表的长度;
(4)根据指定条件能够取元素和修改元素;
(5)实现在指定位置插入和删除元素的功能。
[测试数据]
由学生任意指定。
运行结果如下图:
1)实现删除功能
2)实现取元素功能
3)实现查找功能
4)实现插入功能
[源代码](加注释)
#include<
stdio.h>
#include<
iostream.h>
malloc.h>
#definemaxlen100//设元素个数最大为100
typedefstruct//声明一个结构体来存放顺序表
{intdata[maxlen];
//定义存储表中元素的数组
intlistlen;
//定义表长度分量
}seqlist;
voidget_element(seqlist*L,intI,int*x);
//按序号求元素运算的子函数
intList_locate(seqlistL,intI,intx);
//声明按值查询元素的子函数
boolList_insert(seqlist*L,intI,intx);
//声明插入元素的子函数
boolList_delete(seqlist*L,intI);
//声明删除元素的子函数
voidmain()
{seqlist*L;
//表结构变量的定义
L=(seqlist*)malloc(sizeof(seqlist));
//为表分配空间
inti;
//定义整型变量
for(i=1;
i<
=20;
i++)//赋值给表中的元素
{L->
data[i-1]=i;
//填入删除容
}
L->
listlen=20;
//定义表的长度
cout<
<
"
删除前的顺序表:
\n"
;
=L->
listlen;
i++)//输出表中元素
{cout<
L->
data[i-1]<
"
\n输入要删除的纪录号:
cin>
>
i;
//用户输入删除的记录
if(List_delete(L,i))//用删除元素的子函数
\n删除成功!
删除后的顺序表为:
for(i=1;
i++)//向前批量移动元素
{cout<
}
}
boolList_delete(seqlist*L,inti)//删除元素的子函数
{intj;
//定义一个整型变量
if(L->
listlen<
=0)//空表不能删除元素
下溢出错!
returnfalse;
//返回false
if(i>
listlen||i<
=0)//删除元素不存在
删除位置错!
else{for(j=i;
j<
listlen-1;
j++)//向前批量移动元素
{L->
data[j-1]=L->
data[j];
L->
listlen--;
//表长度减1
returntrue;
//返回true
//表结构变量的定义
//为表分配空间
取元素前的顺序表:
i++)//输出表中元素
\n输入要取元素的序号:
//用户输入要取元素的记录
if(get_element(L,i))//用取元素的子函数
{cout<
\n取元素成功!
取元素后的顺序表为:
i++)
boolget_element(seqlist*L,inti)//取元素的子函数
{intx;
if(i<
1||i>
listlen)//要取的元素不存在
{cout<
//空表无元素
returnfalse;
}
else
{x=L->
data[i-1];
//取出相应元素
\n所取的元素\n"
x<
//输出对应元素
returntrue;
inti,x,a;
//定义三个整型变量
//定义表的长度
查找元素前的顺序表:
\n输入要查元素:
x;
//用户输入查找的记录
a=List_locate(L,x);
if(a!
=0)
\n查元素成功!
查元素后的顺序表为:
a<
cout<
\n取元素后的顺序表为:
//取元素后的顺序
elsecout<
\n查无此元素成功!
:
intList_locate(seqlist*L,intx)//按值查询元素的子函数
{inti;
//定义一个整型变量
for(i=0;
i++)//依次比较各个元素
{if(L->
data[i]==x)return(i+1);
//找到元素X的位置返回其序号
return(0);
//未找到则返回0值
//填入插入容
插入元素前的顺序表:
\n输入要插的元素:
//用户输入插入的记录
\n输入要插的位置:
//用户输入插入的位置
a=List_insert(L,i,x);
if(a==1)
\n插入元素成功!
\n插入元素后的顺序表为:
elseif(a==0)
溢出,不能插入!
//溢出,不能插入
elsecout<
插入位置错!
intList_insert(seqlist*L,inti,intx)//插入元素的子函数
listlen==maxlen)
//溢出,不能插入
return0;
//返回
elseif(i<
listlen+1)
//插入围错
return-1;
}//返回并结束
{for(j=L->
j>
=i-1;
j--)//往后移动元素
data[j+1]=L->
data[i-1]=x;
//填入插入的元素
listlen++;
//修改表长度
return1;
题目二:
单链表的基本操作
[问题描述]
实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。
(1)依次从键盘读入数据,建立带头结点的单链表;
(2)输出单链表中的数据元素
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 60140140 袁若飞 实验 线性 地基 操作 及其 应用