顺序表基本算法实验报告.docx
《顺序表基本算法实验报告.docx》由会员分享,可在线阅读,更多相关《顺序表基本算法实验报告.docx(9页珍藏版)》请在冰点文库上搜索。
![顺序表基本算法实验报告.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/00660624-7e7c-4f6b-80a9-f25732cd5c9d/00660624-7e7c-4f6b-80a9-f25732cd5c9d1.gif)
顺序表基本算法实验报告
C语言程序设计实践
综合题目:
顺序表基本算法
班级:
姓名:
同组人员:
提交日期:
一、程序功能:
1、建立一个顺序表。
2、对建立好的顺序表进行一些基本的操作,如:
a.顺序表的类型定义。
b.求顺序表长操作。
c.取顺序表元素操作。
d.按值查找操作。
e.显示元素操作。
f.插入操作。
g.删除操作。
h.显示元素操作。
二、算法设计思想:
用一组存储单元来存放线性表中的数据元素,把顺序表中的所有元素按照其逻辑结构顺序依次储存到从计算机储存器中指定储存位置开始的一块连续的储存空间。
线性表中的第一个位置储存在数组的起始位置(下标为0)在定义一个顺序表时,除了定义一个数组来储存线性表中的所有元素,还需要定义一个整型变量来储存线性表的实际长度。
然后通过对数组元素中的元素进行操作,对顺序表进行基本算法。
三、算法运行结果
1、显示整个功能
2、设置顺序表的长度:
3、求出并返回顺序表的长度:
4、在顺序表中取出某个位置的元素并返回其值:
5、显示顺序表中的元素:
6、在顺序表的某个位置插入元素:
7、删除顺序表中的某个元素
8、输出顺序表
9、将顺序表逆序输出
10、退出对顺序表的操作:
四、收获及体会
通过对顺序表的几个基本运算的调用,实现顺序表的几个基本算法。
同时也懂得如何定义顺序表,还有顺序表的用法。
五、算法源代码
#include
#include
#defineMaxSize50
typedefintElemType;
typedefstruct
{
ElemTypedata[MaxSize];
intlength;
}SqList;//顺序表类型
voidInitList(SqList*&L);//初始化顺序表
voidCreateList(SqList*&L,ElemTypea[],ElemTypen);//建立顺序表
boolListEmpty(SqList*L);//判断顺序表是否为空表
intListLength(SqList*L);//求顺序表长度
voidDispList(SqList*L);//输出顺序表
boolGetElem(SqList*L,ElemTypei,ElemType&e);//求顺序表中某个元素值
intLocateElem(SqList*L,ElemTypee);//按照元素值查找
boolListInsert(SqList*&L,ElemTypei,ElemTypee);//插入元素e
boolListDelete(SqList*&L,inti,ElemType&e);//删除元素
voidDestroyList(SqList*&L);//销毁顺序表
voidInitList(SqList*&L)//初始化顺序表
{
L=(SqList*)malloc(sizeof(SqList));
L->length=0;
}
voidCreateList(SqList*&L,ElemTypea[],ElemTypen)//建立顺序表2
{
inti;
L=(SqList*)malloc(sizeof(SqList));
for(i=0;iL->data[i]=a[i];
L->length=n;
}
boolListEmpty(SqList*L)//判断顺序表是否为空表
{
return(L->length==0);
}
intListLength(SqList*L)//求顺序表长度
{
return(L->length);
}
voidDispList(SqList*L)//输出顺序表
{
inti;
for(i=0;ilength;i++)
printf("%3d",L->data[i]);
printf("\n");
}
boolGetElem(SqList*L,ElemTypei,ElemType&e)//求顺序表中某个元素值
{
if(i<1||i>L->length)
returnfalse;
e=L->data[i-1];
returntrue;
}
intLocateElem(SqList*L,ElemTypee)//按照元素值查找
{
inti=0;
while(ilength&&L->data[i]!
=e)
i++;
if(i>L->length)
return0;
else
returni+1;
}
boolListInsert(SqList*&L,ElemTypei,ElemTypee)//插入元素e
{
intj;
if(i<1||i>L->length+1)
returnfalse;
i--;
for(j=L->length;j>i;j--)
L->data[j]=L->data[j-1];
L->data[i]=e;
L->length++;
returntrue;
}
boolListDelete(SqList*&L,inti,ElemType&e)//删除元素
{
intj;
L=NULL;
if(i<1||i>L->length)
returnfalse;
i--;
e=L->data[i];
for(j=i;jlength-1;j++)
L->data[j]=L->data[j+1];
L->length--;
returntrue;
}
voidDestroyList(SqList*&L)//销毁顺序表
{
free(L);
L=NULL;
}