- 828
- 0
- 约2.18千字
- 约 7页
- 2018-02-27 发布于河北
- 举报
基于线性表的图书信息管理实验报告1.doc
北 京 林 业 大 学
13学年—14学年第 1学期 数据结构C 实验报告书
专业: 电子信息科学与技术 班级: 电子131
姓名: 潘林 学号: 131114119
实验地点: 北林学研N09 任课教师: 孟伟
实验题目: 基于线性表的图书信息管理
实验环境: Visual C++
实验目的:
1、掌握线性表的定义;
2、掌握线性表的基本操作,如建立、查找、插入和删除等。
(一)实现方法
1. 所用数据结构的定义及其相关说明(相关结构体或类的定义及其含义)
//定义图书表
typedef struct
{
int no; //书号
char name[20]; //书名
int price; //书价
}Book;
//单链表的建立
typedef struct LNode
{
Book data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList;
2.自定义函数的名称及其功能说明
void creatlist_L(LinkList L, int n); //根据指定图书个数,逐个输入图书信息
int Getlem_L(LinkList L,int i, int e); //根据指定的位置可返回相应的图书信息(书号,书名,定价)
void LocateElem_L(LinkList L, string name); //根据书名进行查找,返回此书的书号和定价
void ListInsert_L(LinkList L,int i,char k); // 插入到表中指定的位置
void ListDelete_L(LinkList L,int d); // 删除指定位置的图书记录
void Number(LinkList L); //计数
void Limbo(LinkList L,int option) ; //选择功能
void Function(LinkList L); //友好的提示
3.主要功能算法的时间复杂度
(2)链表 函数名称 时间复杂度 void LocateElem_L(LinkList L) O(n) void Number(LinkList L)
void Limbo(LinkList L,int option) O(n)
O(n) void creatlist_L(LinkList L, int n) O(n) void Function(LinkList L) O(n) int Getlem_L(LinkList L,int i, int e) O(n) void ListInsert_L(LinkList L,int i) O(n) void ListDelete_L(LinkList L,int d) O(n)
4. 实验任务书中要求画的流程图
(1)链表插入的流程图
(二)实验结果
粘贴程序的实际运行测试结果并加以文字说明
(1) 根据指定图书个数,逐个输入图书信息;
(2) 根据书名进行查找,返回此书的书号和定价;
(3) 根据指定的位置可返回相应的图书信息(书号,书名,定价);
(4) 给定一个图书信息,插入到表中指定的位置
(5) 删除指定位置的图书记录;
(6) 统计表中图书个数。
(三)结论分析
1. 问题与解决方法
1)在实现链表int Getlem_L(LinkList L)时,思路有误区,首先该函数实现“按序号查找”功能,我没有搞清应该命令书号(书的位置)还是命令书的名字来执行该函数,后来我选择通过命令其输入书的位置来查找书。
2)最普遍的问题是虽然学会了算法,但是我的语法基础不扎实经常出现错误,之后通过与同学、老师交流慢慢了解C++的语句用法。
3)在实现void LinstDelete_L函数时,由于未意识到删除结点前应该储存结点,导致算法出错。最后查找书时,发现结点需先用一个已定义的结点来储存该结点地址,再使上一个结点指针指向该结点指针域。
2. 收获和体会
本次实验收获非常大!由于大一厌恶编程,
原创力文档

文档评论(0)