版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宁夏师范学院数学与计算机科学学院《数据结构》实验报告实验序号:01实验项目名称:线性表的顺序表示和实现学号17姓名王乾专业、班级信科班实验地点文科楼227指导教师李国奇时间2015.9.10一、实验目的及要求1、熟悉C语言的上机环境,进一步掌握C语言的结构特点。2、掌握线性表的顺序存储结构的定义及C语言实现。3、掌握线性表在顺序存储结构即顺序表中的各种基本操作。4、利用线性表的顺序存储结构解决实际问题。二、实验设备(环境)及要求硬件:PC(1GHz或32位(x86)或64位(x64)处理器,1G以上内存)、因特网接入;软件:WindowsXP操作系统、Office2003、visualC++6.0;三、实验内容与步骤1、编写一个算法实现两个有序(从小到大)顺序表合并成为一个顺序表,合并后的结果放在第一个顺序表中,不另设新的顺序表存储(假设这两个有序顺序表中没有相同的元素)
#include<stdio.h>
#define
MaxLen
50
typedef
int
elemtype;
typedef
elemtype
sqlist[MaxLen];
int
create(sqlist
A)
//创建顺序表
{
int
i,n;
printf("建立顺序表:");
printf("输入元素个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&A[i]);
}
return
n;
}
void
disp(sqlist
A,int
n)
//输出顺序表
{
int
i;
printf("输出顺序表:");
if
(n==0)printf("empty");
for(i=0;i<n;i++)
printf("%d,",A[i]);}
int
comb(sqlist
A,int
na,sqlist
B,int
nb)
{int
n=na,m=nb;
if(na+nb>MaxLen)
return
0;
while(nb>0)
if(na==0||(A[na-1]<B[nb-1]))
{
A[na+nb-1]=B[nb-1];
nb--;}
else
{
A[na+nb-1]=A[na-1];
na--;
}
na=n+m;
return
na;
}
void
main()
{
sqlist
A,B;
int
na,nb;
na=create(A);
nb=create(B);
disp(A,na);
disp(B,nb);
na=comb(A,na,B,nb);
disp(A,na);
}
2、设有一个顺序表A,包含n个元素,要求写出一个将该表逆置的算法,并只允许在原表的存储空间外再增加一个附加的工作单元
#include<stdio.h>
#define
MaxLen
50
typedef
int
elemtype;
typedef
elemtype
sqlist
[MaxLen];
int
create
(sqlist
A)
{
int
i,n;
printf("创建一个顺序表\n");
printf("输入元素个数:");
scanf("%d",&n);
for
(i=0;i<n;i++)
{
printf("输入第%d个元素值:",i+1);
scanf("%d",&A[i]);
}
return
n;
}
void
invert(sqlist
A,int
n)
{
int
m=n/2,i;
elemtype
temp;
for
(i=0;i<m;i++)
{
temp=A[i];
A[i]=A[n-i-1];
A[n-i-1]=temp;/*交换*/
}
}
void
disp(sqlist
A,
int
n)
{int
i;
printf("输出顺序表:");
for(i=0;i<n;i++)
printf("%d",A[i]);
printf("\n");
}
void
main()
{
sqlist
A;
int
n;
n=create(A);
disp(A,n);
invert(A,n);
disp(A,n);
}
3、有一个已按递增次序排好序的线性表,今输入一个数,要求按原来的排序规律将它插入到线性表中。
#include
<stdio.h>
void
main()
{int
a[11]={12,13,14,16,22,25,26,27,29,30,54};
int
temp1,temp2,number,end,i,j;
printf("初始线性表如下:");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("输入插入的数据:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{
for(i=0;i<10;i++)
{
if(a[i]>number)
{
temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{
temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
printf("插入后线性表如下:");
for(i=0;i<11;i++)
printf("%5d",a[i]);
}四、实验结果与数据处理1、2、3、五、分析与讨论六、教师评语1.按时完成实验;2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论