实验项目名称:线性表的顺序存储结构上的基本运算
(所属课程:数据结构--用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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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);
}
void printList(SeqList s){ printf("%d",st);
for (int i=0;i<=st;i++){
printf("%d\t",s.elem[i]);
}
printf("\n");
}
void main(){
SeqList L={{1,2,9,8,4,5,3,6,2},9};
int * h;
printList(L);
DelList(&L,3,h);
printList(L);
}
六、讨论
1.在实现顺序表的插入与删除运算时,不懂的创建printList函数,把顺序表的元素逐项输出。
2.在实现3个算法时,不会编写main函数。
3.在编写程序时,在语法上出现了很多错误,包括一些细节问题。
七、参考文献
列举自己在本次准备实验、进行实验和撰写实验报告过程中用到的参考文献资料。
格式如下:
耿国华张德全周明全等编著,《数据结构--用C语言描述》,高等教育出版社,2015年7月,41-45页。