《数据结构》课程实验报告一

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;isize;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;isize;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;isize;i++)

{

printf("%d\t",L->a[i]);

//if ((i+1)%10==0) printf("\n"); }

printf("\n");

}

void reverse(sequence_list *L)

{

int i=0;

相关文档
最新文档