数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx
《数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
ElemType*elem;
//顺序表的基地址
//顺序表的当前长度
intlistsize;
//预设空间容量
}SqList;
//线性表的顺序存储结构
SqList*InitList()//创建空的顺序表
SqList*L=(SqList*)malloc(sizeof(SqList));
//定义顺序表L
if(!
L)
{
printf("
空间划分失败,程序退出\n"
);
returnNULL;
}
L->
elem=(ElemType*)malloc(MAXSIZE*sizeof(ElemType));
L->
elem)
{
}
length=0;
listsize=MAXSIZE;
returnL;
}
intCreateList(SqList*L)//创建顺序表(非空)
intnumber;
//顺序表中元素的个数
inti;
//循环变量
请输入顺序表中元素的个数:
"
scanf("
%d"
&
number);
if(number>
MAXSIZE)//一定要判断输入的个数是否大于顺序表的最大长度
输入个数大于顺序表的长度\n"
return0;
for(i=0;
i<
number;
i++)
输入第%d个数:
"
i+1);
L->
elem+i);
//L->
elem+i:
每次的输入都保存在顺序表元素中的下一个地址,而不是一直放在元素的首地址
}//给顺序表中每个数据元素赋值
length=number;
//当前顺序表的长度
return1;
voidprint(SqList*L)//遍历顺序表
{
printf("
\n开始遍历顺序表\n"
length;
i++)
*(L->
elem+i));
和输入是一个道理
\n遍历结束\n"
\n"
intmain()
SqList*L=InitList();
//申请一个指向顺序表的指针,并对其初始化
L)//判断申请是否成功
初始化线性表失败\n"
CreateList(L))//判断创建顺序表是否成功
创建顺序表失败\n"
print(L);
//打印顺序表与上面遍历顺序表相对应,若没有就不遍历
free(L->
elem);
//释放申请的顺序表元素的内存
free(L);
//释放申请的顺序表内存
表的有序合并
#include<
//顺序表结构体的定义
typedefstruct{
ElemTypedata[MAXSIZE];
intsize;
//函数声明
voidinit(seqlist*slt);
voiddisplay(seqlistslt);
voidsort(seqlist*s);
voidcombine(seqlist*s1,seqlist*s2,seqlist*s3);
//顺序表的初始化函数
voidinit(seqlist*slt)
slt->
size=0;
//顺序表的显示函数
voiddisplay(seqlistslt)
slt.size)
\n顺序表为空"
);
else
slt.size;
\n%d\n"
slt.data[i]);
//顺序表排序
voidsort(seqlist*s)
inti;
intj;
inttemp;
s->
size-1;
for(j=i+1;
j<
size;
j++)
{
if(s->
data[i]>
=s->
data[j])
{
temp=s->
data[i];
s->
data[i]=s->
data[j];
data[j]=temp;
}
}
//两个有序顺序表连接函数
voidcombine(seqlist*s1,seqlist*s2,seqlist*s3)
inti=0;
intj=0;
intk=0;
while(i<
s1->
size&
&
j<
s2->
size)
if(s1->
data[i]<
=s2->
s3->
data[k]=s1->
i++;
else
data[k]=s2->
j++;
k++;
if(i==s1->
while(j<
s2->
k++;
if(j==s2->
while(i<
s1->
s3->
size=k;
//主函数
intx;
intn;
seqlistlist1;
seqlistlist2;
seqlistlist3;
init(&
list1);
第一个顺序表元素个数:
&
n);
第一个顺序表输入:
for(i=0;
i<
n;
i++)
scanf("
list1.data[i]);
list1.size++;
sort(&
//第一个表排序
list2);
第二个顺序表元素个数:
第二个顺序表输入:
list2.data[i]);
list2.size++;
sort(&
//第二个表排序
list3);
combine(&
list1,&
list2,&
表一与表二连接后:
display(list3);