数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx

上传人:b****6 文档编号:18719464 上传时间:2022-12-31 格式:DOCX 页数:9 大小:47.88KB
下载 相关 举报
数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx_第1页
第1页 / 共9页
数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx_第2页
第2页 / 共9页
数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx_第3页
第3页 / 共9页
数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx_第4页
第4页 / 共9页
数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx

《数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。

数据结构实验报告顺序表的创建遍历及有序合并操作Word文档下载推荐.docx

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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1