实验报告1Word下载.docx
《实验报告1Word下载.docx》由会员分享,可在线阅读,更多相关《实验报告1Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
2、成绩表的基本操作设计
1、掌握顺序表的创建与查询算法的设计和程序实现方法
2、掌握顺序表的插入、删除操作的算法设计和程序实现方法
3、掌握链表的创建与遍历查询算法的设计和程序实现方法
4、掌握链表的插入、删除操作的算法设计和程序实现方法
5、掌握栈和队列的创建算法的设计和程序实现方法
6、掌握入栈和出栈操作、入队列和出队列操作的算法设计和程序实现方法
3、成绩表二叉树排序与过滤的设计
1、掌握二叉树的结构特点
2、掌握二叉排序树的创建算法和程序实现
3、掌握二叉树的遍历算法
4、了解利用二叉树构建过滤规则树的方法
5、学会应用过滤规则树对成绩表的表项进行过滤
4、成绩表的检索和排序设计
1、掌握顺序检索、二分检索和哈希检索的算法设计和程序实现
2、掌握简单插入排序、简单选择排序、冒泡排序和快速排序的算法设计和程序实现。
五、设计原理:
七、实验器材(设备、元器件):
计算机1台,实验软件一套,Windows系统,VC++6.0
八、测试步骤:
/*******************************Copyright(c)*********************************************
**UniversityofElectronicScienceandTechnologyofChina
**SchoolofCommunicationandInformationEngineering
**
**
**---------------------------FileInfo---------------------------------------------------
**Filename:
table.cpp
**LastmodifiedDate:
2012-12-19
**LastVersion:
1.0
**Descriptions:
各种顺序表操作,顺序表结构的定义在mystruct.h中,
**函数中使用的与界面显示有关接口的说明在ui.h
**本文件基于C语言风格
**------------------------------------------------------------------------------------------
**Createdby:
DuanJingshan
**Createddate:
**Modifiedby:
**Modifieddate:
**Version:
*******************************************************************************************/
#include"
stdafx.h"
mystruct.h"
ui.h"
/*******************************************************************************************
**Functionname:
init_table()
**Descriptions:
初始化顺序表
**顺序表利用数组作为基础,其特点是需要事先获得全部元素空间,因此本函数的主要
**功能就是向系统申请足够的空间作为顺序表的存储空间。
涉及的系统函数为:
**malloc()
**此外,良好的习惯是将空间内的各项数据进行适当的初始化
**Input:
NONE
**Output:
**return:
类型:
table_t*,返回顺序表的结构指针
**Createdby:
**CreatedDate:
**Modifiedby:
**ModifiedDate:
table_t*init_table()
{
table_t*t;
t=(table_t*)malloc(sizeof(table_t));
t->
length=0;
returnt;
}
free_table()
释放顺序表空间
**当程序结束时会通过本函数来释放通过malloc获得的顺序表空间
顺序表指针
void
voidfree_table(table_t*t)
free(t);
get_table()
查询顺序表
**查询顺序表中第i个元素
**table_t*table;
**intindex;
查询位置,即第i个元素
**element_t*elem;
元素域指针,用来存放被查询到的元素内容,
**(注意,需要将元素全部内容拷贝到该指针所记录的空间中,即,使用memcpy())
int,返回查询是否成功,为0表示找到指定元素,为-1表示没有找到,一般是因为
**index指示的位置超出了顺序表的范围
intget_table(table_t*table,intindex,element_t*elem)
//判断index是否超出顺序表范围
if(index<
=0||index>
table->
length){
return-1;
}
//复制元素内容到指定空间中;
memcpy(elem,&
(table->
data[index-1]),sizeof(element_t));
//error
return0;
add_table()
将指定元素放入到顺序表的末尾
**element_tdata;
待放入的元素
添加新元素后的顺序表指针
int;
为-1表示放入失败,一般是因为顺序表已经放满,为0表示正确放入
intadd_table(table_t*table,element_tdata)
data[table->
length]=data;
length++;
return0;
insert_table()
将指定元素插入到顺序表的指定位置之前
**intlocation;
插入位置,语义是:
第X个元素前,,当location大于链表元素总数时,该元素
**将插入到表尾。
插入新元素后的顺序表指针
为-1表示插入失败,一般是因为顺序表已经放满或者插入位置不正确,
为0表示正确插入
intinsert_table(table_t*table,element_tdata,intlocation)
location=location-1;
if(location<
0)
elseif(location>
table->
length)
table->
length+1]=data;
else
{
intj;
for(j=table->
length-1;
j>
=location;
j--)
table->
data[j+1]=table->
data[j];
data[location]=data;
length=table->
length+1;
insert_table_by_order()
将指定元素按照学号从小到大顺序插入到顺序表中
intinsert_table_by_order(table_t*table,element_tdata)
intt,i;
t=table->
length;
if(t==MAX_TABLE_SIZE){
i=0;
while(table->
data[i].stuID<
data.stuID){
i++;
insert_table(table,data,++i);
delete_table()
删除顺序表中指定姓名作为关键字的元素
**char*name;
以该姓名为关键字的元素将被删除
删除指定元素后的顺序表指针
为-1表示删除失败,一般是因为顺序表没有找到指定元素,
为0表示正确删除
intdelete_table(table_t*table,char*name)
inti;
i=0;
while(strcmp(name,table->
data[i].stuName)){
if(i==MAX_TABLE_SIZE){
return-1;
}
for(i;
i<
i++){
data[i]=table->
data[i+1];
length-=1;
delete_table_below()
删除顺序表中总分小于某个指定值的所有元素,本算法的特点是
**希望一趟能在顺序表中删除多个元素
**intx;
删除范围,即被删除的元素总分小于这个值
删除元素后的顺序表指针
void;
voiddelete_table_below(table_t*table,intx)
intt[MAX_TABLE_SIZE];
inti,j;
j=0;
for(i=0;
if(x>
data[i].overall){
t[j]=i;
j++;
for(j-=1;
=0;
j--){
for(i=t[j];
length-=1;
return;
九、测试数据及结果分析:
十、设计与测试结论:
程序可编译,功能得到实现
十一、总结及心得体会:
细心思考
十二、对本实验过程及方法、手段的改进建议:
还可以通过一些手段优化
报告评分:
指导教师签字: