数据结构实验报告-顺序表的创建、遍历及有序合并操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构实验报告-顺序表的创建、遍历及有序合并操作二、实验内容与步骤

实现顺序表的创建、遍历及有序合并操作,基本数据结构定义如下:

typedef int ElemType;

#define MAXSIZE 100

#define FALSE 0

#define TRUE 1

typedef struct

{ElemType data[MAXSIZE];

int length;

}seqlist;

创建顺序表,遍历顺序表

#include

#include

#define MAXSIZE 100

#define Icreament 20

#define FALSE 0

#define TRUE 1

typedef int ElemType; //用户自定义数据元素类型

// 顺序表结构体的定义

typedef struct

{

ElemType *elem; //顺序表的基地址

int length; //顺序表的当前长度

int listsize; //预设空间容量

}SqList; //线性表的顺序存储结构

SqList* InitList() //创建空的顺序表

{

SqList* L = (SqList*)malloc(sizeof(SqList));//定义顺序表L

if(!L)

{

printf("空间划分失败,程序退出\n");

return NULL;

}

L->elem=(ElemType *)malloc(MAXSIZE*sizeof(ElemType));

if(!L->elem)

{

printf("空间划分失败,程序退出\n");

return NULL;

}

L->length=0;

L->listsize=MAXSIZE;

return L;

}

int CreateList(SqList* L) //创建顺序表(非空)

{

int number; //顺序表中元素的个数

int i; //循环变量

printf("请输入顺序表中元素的个数:");

scanf("%d",&number);

if(number > MAXSIZE) //一定要判断输入的个数是否大于顺序表的最大长度

{

printf("输入个数大于顺序表的长度\n");

return 0;

}

for(i=0;i

{

printf("输入第%d个数: ",i+1);

scanf("%d",L->elem+i); //L->elem+i:每次的输入

都保存在顺序表元素中的下一个地址,而不是一直放在元素的首地址

}//给顺序表中每个数据元素赋值

L->length=number; //当前顺序表的长度

return 1;

}

void print(SqList* L) //遍历顺序表

{

int i;

printf("\n开始遍历顺序表\n");

for(i=0;ilength;i++)

{

printf("%d",*(L->elem + i)); //L->elem+i:和输入是一个道理

}

printf("\n遍历结束\n");

printf("\n");

}

int main()

{

SqList* L = InitList(); //申请一个指向顺序表的指针,并对其初始化

if(!L) //判断申请是否成功

{

printf("初始化线性表失败\n");

return 1;

}

if(!CreateList(L)) //判断创建顺序表是否成功

{

printf("创建顺序表失败\n");

return 1;

}

print(L); //打印顺序表与上面遍历顺序表相对应,若没有就不遍历

free(L->elem); //释放申请的顺序表元素的内存

free(L); //释放申请的顺序表内存

return 0;

}

表的有序合并

#include

#include

#define MAXSIZE 100 typedef int ElemType;

//顺序表结构体的定义typedef struct{

ElemType data[MAXSIZE] ;

int size;

}seqlist;

//函数声明

void init(seqlist *slt) ;

void display(seqlist slt) ;

void sort(seqlist *s) ;

void combine( seqlist *s1 ,seqlist *s2 ,seqlist *s3) ;

//顺序表的初始化函数

void init(seqlist *slt)

{

slt->size=0 ;

}

//顺序表的显示函数

void display(seqlist slt)

{

int i;

if(!slt.size)

{

printf("\n顺序表为空") ;

}

else

{

for(i=0;i

printf("\n%d\n",slt.data[i]) ;

相关文档
最新文档