数据结构实验基于线性表的图书信息管理Word格式.docx

上传人:b****6 文档编号:20703984 上传时间:2023-01-25 格式:DOCX 页数:15 大小:539.57KB
下载 相关 举报
数据结构实验基于线性表的图书信息管理Word格式.docx_第1页
第1页 / 共15页
数据结构实验基于线性表的图书信息管理Word格式.docx_第2页
第2页 / 共15页
数据结构实验基于线性表的图书信息管理Word格式.docx_第3页
第3页 / 共15页
数据结构实验基于线性表的图书信息管理Word格式.docx_第4页
第4页 / 共15页
数据结构实验基于线性表的图书信息管理Word格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数据结构实验基于线性表的图书信息管理Word格式.docx

《数据结构实验基于线性表的图书信息管理Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构实验基于线性表的图书信息管理Word格式.docx(15页珍藏版)》请在冰豆网上搜索。

数据结构实验基于线性表的图书信息管理Word格式.docx

1、必做

分别定义一个包含图书信息(书号,书名,定价)的顺序表和链表,使其具有如下功能:

(1)从给定的文件book.txt逐个读入图书信息;

(2)逐个显示图书表中所有图书的相关信息;

(3)统计表中图书个数;

(4)输出图书价格最高的图书信息(考虑可能有多个);

(5)计算所有图书的平均价格;

(6)根据书名进行查找,返回相应书名的图书的书号和定价(考虑重名情况);

(7)根据指定的位置,返回相应位置的图书的全部信息;

(8)给定一本图书相关信息,插入到表中指定的位置,将插入后的结果重新写入文件book.txt;

(9)删除指定位置的图书记录,将删除后的结果重新写入文件book.txt;

(10)将图书表信息逆序存储,将逆序的图书信息存入文件book_inverser.txt中。

2、选做

(1)按照图书价格进行排序,将排序的结果以格式(定价,书号,书名)存入文件book_sort.txt中。

(2)实现两个一元多项式的加法、减法、乘法运算。

实现方法、实验结果及结论分析等:

(一)实现方法

1.所用数据结构的定义及其相关说明(相关结构体或类的定义及其含义)

//定义一个结构体Book

structBook//定义结构体

{

charno[30];

//编码

charname[30];

//书名

intprice;

//价格

};

//顺序表的定义

typedefstructLNode//定义顺序表

structBook*elem;

//指向数据元素的基地址

intlength;

//顺序表当前长度

}SqList;

//链表的定义

typedefstructLNode//定义链表

structBookdata;

//数据域

structLNode*next;

//指针域

}LNode,*LinkList;

//一元二次多项式的定义

typedefstructPNode

floatcoef;

//参数

intexpn;

//指数

structPNode*next;

}PNode,*Polynomial;

2.自定义函数的名称及其功能说明

//函数声明(顺序表)

StatusInitList(SqList&

L);

//顺序表初始化

voidInput(SqList&

//输入函数

voidOutput(SqListL);

//输出函数

voidCount(SqListL);

//输出数据长度函数

voidCompare(SqListL);

//比较价格函数

voidAverage(SqListL);

//求平均价格函数

voidSearch_name(SqListL);

//按名字查找图书信息函数

voidSearch_no(SqListL);

//按输入图书位置查找图书信息

voidInsert(SqList&

//插入函数

voidDelete(SqList&

//删除函数

voidInverse(SqList&

//逆转函数

//函数声明(链表)

StatusInitList(LinkList&

//初始化链表

voidInput(LinkList&

voidOutput(LinkList&

voidCount(LinkListL);

//输出数据个数的函数

voidCompare(LinkListL);

voidAverage(LinkListL);

voidSearch_name(LinkListL);

//按照书名查找图书信息的函数

StatusSearch_no(LinkListL);

//按照输入位置查找图书信息

StatusInsert(LinkList&

StatusDelete(LinkList&

StatusInverse(LinkList&

//逆序函数

StatusSort(LinkList&

//排序函数

//函数声明(一元多项式)

StatusInitPolyn(Polynomial&

P);

//初始化一元多项式

voidCreatePolyn(Polynomial&

//创建一元多项式

voidCopyPolyn(Polynomial&

P1,Polynomial&

P2);

//一元多项式的拷贝

voidAddPolyn(Polynomial&

PA,Polynomial&

PB);

//一元多项式相加函数

voidMinusPolyn(Polynomial&

//一元多项式相减

voidMultiplyPolyn(Polynomial&

Pa,Polynomial&

Pb);

//一元多项式相乘

3.主要功能算法的时间复杂度

⑴顺序表

函数名称

时间复杂度

//顺序表初始化

O

(1)

//输入函数

O(n)

//输出函数

//比较价格函数

//求平均价格函数

//按照书名查找

//按照输入位置查找

//插入函数

//删除函数

⑵链表

//初始化链表

//输出数据个数的函数

//逆序函数

//排序函数

O(n*n)

⑶一元多项式

//初始化一元多项式

O(m+n)

O(m*n*m*n)

4.实验任务书中要求画的流程图

⑴链表根据指定位置进行查找的算法流程图

⑵链表插入算法的流程图

(二)实验结果

1.顺序表

(1)菜单:

当输入超出菜单所给的数字时出现提示

(2)输出函数:

输出全部图书信息

(3)统计图书个数

(4)找出价格最高的图书,并输出其信息。

当出现多个价格同时最高的图书时依然可以正确输出

(5)求出所有图书的平均价格

(6)按书名查找图书,并输出其信息;

当没有此书时会有提示

(7)按照指定的位置查找图书信息,当输入非法时有提示

(8)在指定位置插入图书信息,当位置不合法或者空间不足时有提示

(9)删除指定位置的图书信息,当输入位置不合法是提示

(10)图书信息逆序

2.链表

(1)当输入超出菜单所给选项的数字时有提示

(2)输出所有的图书信息

(3)统计图书个数

(4)查找价格最高的图书,如果有多本书同时为最高价可全部输出

(5)计算所有图书的平均价格

(6)按书名查找图书,可查找多本同名图书,当无查找书籍信息时有

提示

(7)按输入位置查找图书信息,当位置不合法是有提示

(8)在指定位置插入信息,当位置不合法是有提示

(9)删除指定位置的图书信息,当位置不合法是有提示

(10)将所有图书信息逆序

(11)将所有图书信息按照价格由高到低排序

3.一元多项式

(1)创建一元多项式

(2)弹出菜单,当输入错误选项时有提示,还有选项可以跳出菜单

(3)一元多项式相加

(4)一元多项式相减

(5)一元多项式相乘

(三)结论分析

1.问题与解决方法

在写菜单的代码时,我设法让菜单能够循环,但是也要有出口,所以选择了一个循环;

在选择菜单选项时,由于选项较多,用if语句进行选择会套用多层if语句,而且对于非选项的数字处理也较麻烦,于是我选择了switch语句。

但是要菜单不断重复,只是在选择退出菜单选项时停止循环,所以我选择了while循环语句,并让条件永远为真,当保存选项的变量为退出菜单选项时,用break终止循环。

2.收获和体会

在一元多项式乘法运算的编写中,遇到了几个困难,我通过调试,逐步跟踪数据的变化,找到了出错位置,并及时改正。

这让我进一步体会到了多重循环及判断语句套用时应注意的细节,以及指针的再次使用重赋值问题。

与此同时,我对于调试也进一步熟悉起来,对于日后的程序编写检查错误积累了经验。

3.尚存在的问题

对于步骤复杂的函数编写容易出错,程序的健壮性仍有欠缺,尤其是对于一元多项式的不同情况的问题应进一步改进。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1