数据结构实验报告-顺序表的创建、遍历及有序合并操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;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]) ;