《数据结构》课程实验报告一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》课程
实验报告一线性表的顺序实现
一、实验目的和要求:
1.掌握顺序表的存储结构形式及其描述和基本运算的实现。
2.掌握用顺序表表示集合等数据的方法,并能设计出合理的存储结构,编写出有关运算的算法。
二、实验内容:(给出具体的说明文字和操作图片)
已知顺序表结构与相关函数定义在sequlist.h文件中,基于该文件完成所有实验题。
1.基于sequlist.h中定义的顺序表L,设计一个算法void
delx(sequence_list *L, datatype x),删除其中所有值等于x 的元素,要求算法的时间复杂度为O(n)、空间复杂度为0(1)。
#include
#include
#include
/**********************************/
/*顺序表的头文件,文件名sequlist.h*/
/**********************************/
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];//存放数组a的第一个地址
int size;//长度
}sequence_list;
//请将本函数补充完整,并进行测试//
void initseqlist(sequence_list *L)//初始化OK
{
L->size=0;
}
void input(sequence_list *L)
{
datatype x;
initseqlist(L);
printf("请输入一组数据,以0做为结束符:\n"); scanf("%d",&x);
while (x)
{
L->a[L->size++]=x;
scanf("%d",&x);
}
}
void delx(sequence_list *L,datatype x) {
int i,j;
j=0;
for( i=0;i
{
if(L->a[i]!=x)
{
if(j
{
L->a[j]=L->a[i];
}
j++;
}
}
L->size=j;//最后数组的长度
}
void print(sequence_list *L)
{
int i;
for (i=0;i
{
printf("%d\t",L->a[i]);
//if ((i+1)%10==0) printf("\n");
}
printf("\n");
}
int main()
{
int x;
sequence_list L; //定义顺序表*/ input(&L);
printf("\n"); //输入测试用例// print(&L); //输出原表// printf("请输入要删除的元素值:");
scanf("%d",&x);
delx(&L,x);// 删除所有值等于x的值//
print(&L);
return 0; //输出新表//
}
2.基于sequlist.h中定义的顺序表,编写算法函数
reverse(sequence_list *L),实现顺序表的倒置。
#include
#include
/**********************************/
/*顺序表的头文件,文件名sequlist.h*/
/**********************************/
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int size;
}sequence_list;
void initseqlist(sequence_list *L)//初始化OK
{
L->size=0;
}
void input(sequence_list *L)
{
datatype x;
initseqlist(L);
printf("请输入一组数据,以0做为结束符:\n"); scanf("%d",&x);
while (x)
{
L->a[L->size++]=x;
scanf("%d",&x);
}
}
void print(sequence_list *L)
{
int i;
for (i=0;i
{
printf("%d\t",L->a[i]);
//if ((i+1)%10==0) printf("\n"); }
printf("\n");
}
void reverse(sequence_list *L)
{
int i=0;