线性表顺序存储结构上的基本运算知识分享
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线性表顺序存储结构上的基本运算
实验项目名称:线性表的顺序存储结构上的基本运算
(所属课程:数据结构--用C语言描述)
院系:计算机科学与信息工程学院专业班级:网络工程
姓名:000000 学号:0000000000 实验日期:2016.10.20 实验地点:A-06 406 合作者:指导教师:
孙高飞
本实验项目成绩:教师签字:日期:
(以下为实验报告正文)
一、实验目的
本次实验的目的掌握顺序表的存储结构形式及其描述和基本运算的实现;掌握动
态链表结构及相关算法设计
实验要求:输入和验证程序例题。正确调试程序,记录程序运行结果。完成实验
报告。
二、实验条件
Windows7系统的电脑,vc++6.0软件,书本《数据结构--用c语言描述》
三、实验内容
3.1 根据41页代码,用c语言定义线性表的顺序存储结构。
3.2 根据42页算法2.1实现顺序表的按内容查找。
3.3 根据43页算法2.2实现顺序表的插入运算。
3.4 根据45页算法2.3实现顺序表的删除运算。
四、实验步骤
3.2实验步骤
(1)编写头文件,创建ElemType。
(2)根据根据41页代码,“用c语言定义线性表的顺序存储结构”定义顺序表。
(3)根据42页算法2.1实现顺序表的按内容查找,创建Locate函数。
(4)创建main函数,输入SeqList L的数据元素。
(5)输入要查找的数据元素的值,调用Locate函数,输出结果。
3.3实验步骤
(1)编写头文件,创建ElemType。
(2)根据41页代码,“用c语言定义线性表的顺序存储结构”定义顺序表。
(3)根据43页算法2.2实现顺序表的插入运算,创建InsList函数。
(4)创建printList函数,逐项输出顺序表内的元素及顺序表元素的个数。
(5)创建main函数,输入插入的元素和其位置,调用printLinst函数输出顺序表,调用IntList函数,再次调用printLinst函数输出顺序表。
3.4实验步骤
(1)编写头文件,创建ElemType。
(2)根据根据41页代码,“用c语言定义线性表的顺序存储结构”定义顺序表。
(3)根据45页算法2.3实现顺序表的删除运算,创建DelList函数。
(4)创建printList函数,逐项输出顺序表内的元素及顺序表元素的个数。
(5)创建main函数,输入删除元素的位置,调用printLinst函数输出顺序表,调用DelList函数,再次调用printLinst函数输出顺序表。
五、实验结果
(1)实验3.2顺序表的按内容查找
# include
typedef int Elemtype;
typedef struct{
Elemtype elem[100];
int last;
}SeqList;
int Locate(SeqList L,Elemtype e){ int i;
i=0;
while((i<=st)&&(L.elem[i]=e))
i++;
if(i<=st)
return(i+1);
else
return(-1);
}
void main(){
SeqList s={{1,2,3,6,8,10,5,3},7};
int e=5;
int pos=Locate(s,e);
printf("Locate to %d\n",pos);
}
(2)实验3.3顺序表的插入运算
# include
typedef int Elemtype;
typedef struct{
Elemtype elem[100];
int last;
}SeqList;
#define OK 1
#define ERROR 0
int IntList(SeqList*L,int i,Elemtype e) {
int k;
if((i<1)||(i>L->last+2))
{
printf("插入位置i值不合法");
return(ERROR);
}
if(L->last>=100-1)
{
printf("表已满,无法插入");
return(ERROR);
}
for(k=L->last;k>=i-1;k--)
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e;
L->last++;
return(OK);
}
void printList(SeqList s)
{
for(int i=0;i<=st;i++)
printf("%d\t",s.elem[i]);
printf("\n");
}
void main(){
SeqList L={{1,2,4,6,8,10,5,11},8};
printList(L);
IntList(&L,3,10);
printList(L);
}
(3)实验3.4顺序表的删除运算
# include
typedef int Elemtype;
typedef struct{
Elemtype elem[100];
int last;
}SeqList;
int DelList(SeqList * L,int i,ElemType * e) {
int k;
if((i<=1)||(i>L->last+1))
{
printf("删除位置不合法!");
return(ERROR);
}
* e=L->elem[i-1];
for(k=i;i<=L->last;k++)
L->elem[k-1]=L->elem[k];
L->last--;
return(OK);