人人范文网 范文大全

顺序表(基础题)

发布时间:2020-03-03 06:10:44 来源:范文大全 收藏本文 下载本文 手机版

实验项目名称:顺序表基础题

一、首先创建一个顺序表:从键盘读入一组整数(长度小于等于20),按输入顺序放入顺序表,输入以-1结束(注意-1不放到顺序表内);将创建好的顺序表元素依次输出到屏幕上。

二、2)在已创建好的顺序表中插入一个元素:从键盘读入需插入的元素值和插入位置,调用插入函数完成插入操作;然后将顺序表元素依次输出到屏幕上。

三、3)在已创建好的顺序表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作;然后将顺序表元素依次输出到屏幕上。

四、

软件技术基础实验table.cpp

二、程序代码

table_t * init_table() { table_t * t; t=(table_t *)malloc(sizeof(table_t)); t->length=0; return t; }

int get_table(table_t * table,int index, element_t * elem) {

} //判断index是否超出顺序表范围 if(index table->length){ return -1; } //复制元素内容到指定空间中; memcpy(elem,&(table->data[index-1]),sizeof(element_t));//error return 0;

int add_table(table_t * table, element_t data) { if(table->length > MAX_TABLE_SIZE)

return -1; table->data[table->length]=data; table->length++; AddReport(\"成功添加一个元素\"); return 0; }

一. 测试数据

数据.text 二. 上机时遇到的问题

不熟悉malloc()函数的用法 解决方案:上网查找资料 三. 实际运行结果

四. 心得体会

再分配内存空间时,采用动态方式会方便很多,不需要预先估计大小,只是在使用完毕后需要释放空间。查询数据时,顺序表中元素的下标和他的位置差一(下标=位置-1)。

一. 程序说明

将一个数据插入到指定位置。将一个数据按照学号大小顺序插入到对应位置。 二. 程序代码

int insert_table(table_t * table, element_t data, int location) { if(locationMAX_TABLE_SIZE)

return -1; if(location>table->length)

location=table->length+1; location = location -1; table->length++; int i; for(i=table->length-1;i>location;i--){

table->data[i]=table->data[i-1]; } table->data[location]=data; return 0; }

int insert_table_by_order(table_t * table, element_t data) { if(table->length > MAX_TABLE_SIZE)

return -1; int i,location; for(i=0;ilength;i++){

if(data.stuID data[i].stuID){

location=i;

break;

} } table->length++; for(i=table->length-1;i>location;i--){

table->data[i]=table->data[i-1]; } table->data[location]=data;

return 0; } 三. 测试数据

数据.txt 四. 上机时遇到的问题

不会调用学号

解决办法:认真阅读指导书后发现学号stuID是data的成员变量。 五. 实际运行结果

六. 心得体会

data本身作为一个结构体,包含了一个学生的若干信息,又作为结构体数组位于table当中,这样能很方便的调用学生信息。

一. 程序说明 二. 程序代码

int delete_table(table_t * table, char * name) { int i,j; for(i=0;ilength;i++){

for(j=0;j

if(table->data[i].stuName[j]!=name[j])

break;

}

if(j==MAX_NAME_SIZE)

break; } if(i=table->length)

return -1; for(j=i;ilength;j++){

table->data[j]=table->data[j+1]; } table->length--; return 0; }

void delete_table_below(table_t * table, int x) { int i,j=1; for(i=0;ilength;i++){

if (x > table->data[i].overall)

break; } for(;ilength;i++){

while(x>table->data[i+j].overall){

j++;

}

table->data[i]=table->data[i+j];

table->length=table->length-j; } return ; } 三. 测试数据

数据.txt 四. 上机时遇到的问题

五. 实际运行结果

六. 心得体会

在删除单个元素时,由于检索元素是姓名,是字符组,所以需要进行循环判断是否相等,再判断跳出时的下标,以此来判断姓名是否正确。删除大量时和删除负数操作类似。

软件技术基础上机实验报告 顺序表

档案表顺序

初中历史顺序表

笔画顺序表

笔画顺序表

认识数位顺序表

历史时间顺序表

常用字笔画顺序表

婚礼主持顺序表

会议发言顺序表

顺序表(基础题)
《顺序表(基础题).doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题 顺序表习题 顺序
点击下载本文文档