实验报告:顺序表

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

实验报告(实验一)

专业_________班级__________姓名__________学号__________课程名称_____________

学年2009 --2010 学期1□/ 2□课程类别专业必修□限选□任选□实践□

●实验内容:实验时间:2010年 5 月27日

1. 编写函数,输入一组整型元素序列,建立一个顺序表。

2. 编写函数,实现对该顺序表的遍历。

3. 编写函数,在顺序表中进行顺序查找某一元素,查找成功则返回其存储位置i,否则

返回错误信息。

4. 编写函数,实现在顺序表的第i个位置上插入一个元素x的算法。

5. 编写函数,实现删除顺序表中第i个元素的算法。

6. 编写利用有序表插入算法建立一个有序表的函数。

7. 编写函数,利用以上算法,建立两个非递减有序表,并把它们合并成一个非递减有序表。

8. 编写函数,实现输入一个元素x,把它插入到有序表中,使顺序表依然有序。

9. 编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。

●实验目的及要求:

1. 掌握顺序表的存储结构形式及其描述

2. 掌握顺序表的建立、查找、插入和删除操作

●方法与步骤:(使用附页填写并附在本页后)

详见从第2页开始的源代码

●实验结果:

●小结:

分数:批阅老师:2010年月日

实验报告(附页)

源代码:

#include

#include

#define OVERFLOW 0

#define MAXSIZE 100

typedef int ElemType;

typedef struct list

{ElemType elem[MAXSIZE];

int length;

}Sqlist;

void Creatlist(Sqlist &L)

{int i;

printf("请输入顺序表的长度:"); //输入一组整型元素序列,建立一个顺序表。

scanf("%d",&L.length);

for(i=0;i

scanf("%d",&L.elem[i]);

}

void printlist(Sqlist &L) //以输出的形式实现对该顺序表的遍历

{int i;

for(i=0;i

printf("%d ",L.elem[i]);

printf("\n");

}

void Searchlist(Sqlist &L,int x) //在顺序表中进行顺序查找某一元素x,查找成功则返回其存储位置i,否则返回错误信息

{int i,k=-1;

for(i=0;i

if(L.elem[i]==x){

k=i+1;printf("%d ",k);}

if(k==-1)

printf("error!");

printf("\n");

}

void Inseri(Sqlist &L,int i,int x) //在顺序表的第i个位置上插入一个元素x

{int j;

for(j=L.length;j>=i;j--)

L.elem[j]=L.elem[j-1];

L.elem[j]=x;

L.length++;

}

void Delete(Sqlist &L,int i) //删除顺序表中第i个元素

{int j;

for(j=i;j

L.elem[j-1]=L.elem[j];

L.length--;

}

void Insert(Sqlist &L,int x) //输入一个元素x,把它插入到有序表中,使顺序表依然有序。{int i,j;

if(L.length==MAXSIZE) exit(OVERFLOW); //表满,不能插入

for(i=1;i<=L.length&&L.elem[i-1]<=x;i++);

for(j=L.length;j>=i;j--)

L.elem[j]=L.elem[j-1];

L.elem[i-1]=x;

L.length++;

}

void Creatlist_sorted(Sqlist &L) //利用有序表插入算法建立一个有序表

{int i,num;

ElemType x;

L.length=0;

printf("请输入顺序表的长度:");

scanf("%d",&num);

for(i=1;i<=num;i++)

{

scanf("%d",&x);

Insert(L,x);

}

}

void Merger(Sqlist &p,Sqlist &r,Sqlist &c) //建立两个非递减有序表,并把它们合并成一个非递减有序表

{

ElemType *a,*b,i=0,j=0,k=0;

a=&p.elem[0];

b=&r.elem[0];

c.length=p.length+r.length;

while(i

{if(*a>=*b)

{c.elem[k]=*b;b++;k++;j++;}

else {c.elem[k]=*a;a++;k++;i++;}

}

if(j==r.length)

for(;k

{c.elem[k]=*a;a++; }

else if(i==p.length)

相关文档
最新文档