经典数据结构上机题复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构上机实验题目
实验一线性表的顺序存储结构
实验学时 2学时
背景知识:顺序表的插入、删除及应用。
目的要求:
1.掌握顺序存储结构的特点。
2.掌握顺序存储结构的常见算法。
实验内容
1.输入一组整型元素序列,建立顺序表。
2.实现该顺序表的遍历。
3.在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。4.判断该顺序表中元素是否对称,对称返回1,否则返回0。
5.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。
6.输入整型元素序列利用有序表插入算法建立一个有序表。
7.利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。
8. 利用该顺序结构实现循环队列的入队、出队操作。
8.编写一个主函数,调试上述算法。
#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) for(;k {c.elem[k]=*b;b++;} } void main() {Sqlist L,M,N; int x,i,n; printf("1.建立一个顺序表.\n");