《数据结构实验》指导书(实验1)2010(2)

2020-02-21 18:58

case 4: case 5: case 6: case 7:

break;//删除元素 break;//统计 break;//排序 break;//修改

case 0: SaveList(L,out);fclose(in);fclose(out);exit(-1);break;

//保存数据,并退出系统

} }

} getchar();

五、 实验要求

1.认真阅读和掌握本实验的示例程序。

2.上机运行示例程序,打印出程序的运行结果,并作必要的说明。 3.对示例程序,按照对线性表的操作需要,在程序中至少添加2个顺序表的相关操作。如:

1) 查找并显示分数在区间[a,b)的学生信息; 2) 查找并显示最高分或最低分学生信息; 3) 统计不及格或及格人数及所占比例;

4) 将信息表按学号、姓名或分数升序或降序排列; 5) 按学号顺序进行数据元素的插入; 6) 删除指定学号或姓名的学生信息; 7) 修改某个学生的信息; 8) 其它。

4.重新改写主函数(要求必需调用自己添加的操作),打印出文件清单(自己添加的函数、修改后的主函数和运行结果)。 5.对修改后的程序,分析每一个算法(函数)的时间复杂度。 6.根据上述要求撰写实验报告,并简要给出算法设计小结和心得。

6

《数据结构实验》指导书

//************************************************************************//

附:顺序表基本操作的实现程序实例

本程序实例提供的顺序表存储结构定义及基本操作的实现仅供参考。 //-----------------SqList2.CPP-------------------- //本程序定义了顺序表存储结构的另外一种形式 //并演示了几个基本操作的实现

//(初始化、清空、求长度、判空、判满、遍历、查找、插入、删除、有序输出)

#include #include #include #include

typedef int ElemType; // 定义ElemType为int类型 //线性表顺序存储类型定义 struct SqList {ElemType *list;// int size;// 线性表长度

int MaxSize;//线性表的最大容量 };

//顺序表基本操作说明

void InitList(SqList &L,int ms); //初始化顺序表 void ClearList(SqList &L); //清空线性表 int ListSize(SqList &L); //求线性表长度 bool ListEmpty(SqList &L); //检查线性表是否为空 bool ListFull(SqList &L);

//检查线性表是否为满 void TraverList(SqList &L);

//遍历线性表

int FindList(SqList &L,ElemType item);

//从线性表中查找元素

bool InsertList(SqList &L,const ElemType item,int mark);//向线性表插入元素 bool DeleteList(SqList &L,ElemType &item,int mark); //从线性表中删除元素

void OrderOutputList(SqList &L,int mark); //对线性表进行有序输出

//顺序表基本操作的实现

//初始化顺序表

void InitList(SqList &L,int ms)

7

{L.list=new ElemType[ms]; if(!L.list) {cout<<\ exit(1);

}

L.size=0; L.MaxSize=ms; }

//清空线性表

void ClearList(SqList &L) {L.size=0; }

//求线性表长度 int ListSize(SqList &L) {return L.size; }

//检查线性表是否为空 bool ListEmpty(SqList &L) {return L.size==0; }

//检查线性表是否为满 bool ListFull(SqList &L) {return L.size==L.MaxSize; }

//遍历线性表

void TraverList(SqList &L)

{for(int i=0;i

//从线性表中查找元素

int FindList(SqList &L,ElemType item) {for(int i=0;i

8

《数据结构实验》指导书

if(L.list[i]==item) return i; return -1; }

//向线性表的表头、表尾或合适位置插入元素 bool InsertList(SqList &L,const ElemType item,int mark) {if(ListFull(L)) return false; if(mark>0) //向表头插入元素 { for(int i=L.size-1;i>=0;i--) L.list[i+1]=L.list[i];

L.list[0]=item;

}

else //向表尾插入元素 if(mark<0) L.list[L.size]=item; else{ //有序插入元素 for(int i=0;i=i;j--)

L.list[j+1]=L.list[j];

L.list[i]=item;

} L.size++; return true; }

//从线性表中删除表头、表尾或等于给定值的元素 bool DeleteList(SqList &L,ElemType &item,int mark) {if(ListEmpty(L)) return false; if(mark>0) //删除表头元素 {item=L.list[0]; for(int i=1;i

L.list[i-1]=L.list[i]; }

else //删除表尾元素 if(mark<0) item=L.list[L.size-1]; else{ //删除值为item的元素 for(int i=0;i

if(L.list[i]==item) break;

if(i>=L.size) return false;

9

for(int j=i;j

L.list[j]=L.list[j+1];

} L.size--;//表长减1 return true; }

//对线性表进行有序输出

void OrderOutputList(SqList &L,int mark) {int *b=new int[L.size]; int i,k;

for(i=0;i

for(int j=i;j

}

if(k!=i-1) {int x=b[i-1];b[i-1]=b[k];b[k]=x;}

}

for(i=0;i

}

const int ML=10; //线性表的最大长度

void main() {SqList a; InitList(a,ML); int i; ElemType x;

//依次向线性表a表尾插入5个整数元素 cout<<\从键盘输入5个整数:\ for(i=0;i<5;i++) {cin>>x; InsertList(a,x,-1); }

//依次向线性表表头插入2个整数元素

10

《数据结构实验》指导书

cout<<\从键盘输入两个整数:\ cin>>x;InsertList(a,x,1); cin>>x;InsertList(a,x,1); //按不同次序遍历输出线性表a TraverList(a); OrderOutputList(a,1); OrderOutputList(a,0);

//把线性表a中的元素依次有序插入到一个新线性表b中 SqList b; InitList(b,ML); for(i=0;i

//从线性表a 中依次删除表头、表尾和等于给定值的元素 if(DeleteList(a,x,1)) cout<<\ else cout<<\ //输出线性表a TraverList(a);

if(DeleteList(a,x,-1)) cout<<\ else cout<<\ //输出线性表a TraverList(a);

cout<<\从键盘上输入一个待删除的整数:\ cin>>x;

if(DeleteList(a,x,0)) cout<<\ else cout<<\ //输出线性表a TraverList(a); }

//*************************************************************************//

11


《数据结构实验》指导书(实验1)2010(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:申报人才引进材料清单

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: