顺序表(基础题)_顺序表习题

2020-02-28 其他范文 下载本文

顺序表(基础题)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“顺序表习题”。

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

一、首先创建一个顺序表:从键盘读入一组整数(长度小于等于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 四. 上机时遇到的问题

五. 实际运行结果

六. 心得体会

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

《顺序表(基础题).docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
顺序表(基础题)
点击下载文档
相关专题 顺序表习题 顺序 基础 顺序表习题 顺序 基础
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文