实验一 图书信息管理系统的设计与实现
1.要求分析:
所设计的图书信息管理系统要包括新增图书信息、浏览图书信息、删除图书信息、按指定条件查找图书信息、加载图书信息、修改图书信息、对图书按指定标准进行排序等处理。
2.系统详情:
1)数据结构设计:选用链式存储结构存储图书的数据
2)系统功能分析:
录入图书信息——文件读取信息,建立链表
浏览图书信息——遍历图书链表,逐个显示图书表中所有图书信息
插入新增图书——设计菜单提示信息,按指定要求的图书个数分别输入图书的8位书号、书名、价格,输入的信息保存到创建的新存储容器(图书类),作为新的节点根据新图书的位置在链表找到相应节点插入到链表内。
修改图书信息——修改链表中某个节点
统计图书数量—— 统计链表的结点数
删除图书信息——删除链表中某个节点
查找图书信息——链表的查找(﹡二叉排序树)
3.代码提示:
图书信息的定义:
typedef struct {
char no[8]; //8位书号
char name[20]; //书名
int price; //价格
}Book;
顺序表的定义:
typedef struct {
Book *elem; //指向数据元素的基地址
int length; //线性表的当前长度
}SqList;
链表的定义:
typedef struct LNode{
Book data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList;
4.流程图:
实验二 隐式图的搜索问题
1.要求分析:根据给定初始布局和目标布局,如何移动棋子才能从初始布局到达目标布局,找到一种最优的移动方法。
2.系统设计:
- 状态表示的数据结构
struct node {
int data[N][N]; //九宫数据
int G,H,F; //3个估价函数值
node *parent; //前继指针
node() :G(0),H(0),F(0), parent(NULL) {} //默认构造函数
}; - 状态扩展规则的表示
从某一状态出发,寻找空格的位置,探寻空格的上下左右四个方向可移动性,并避免走回头路,计算下一节点的估价函数值。
估价函数为所有数字当前的位置和目标位置的水平距离和垂直距离的绝对值的和。
估价函数: f(n) = g(n) + h(n)
其中g(n)是从初始节点到节点n的实际代价,g(n)可以根据生成的搜索树实际计算出来;h(n)是从n到目标节点的最佳路径的代价估计,h(n)主要体现了搜索的启发信息。
OPEN表和CLOSE表变化过程
从open表取出最后一个状态,进行状态搜索,将新搜索到的点加入open表,后将该状态加入close表,最后重新排序open表。
3.搜索状态空间图:
实验三 基于线性表和二叉排序树的低频词过滤系统
1.要求简述:
1)对于一篇给定的英文文章,分别利用线性表和二叉排序树来实现单词频率的统计,实现低频词的过滤,并比较两种方法的效率。具体要求如下:
2) 读取英文文章文件(Infile.txt),识别其中的单词。
3)分别利用线性表和二叉排序树构建单词的存储结构。当识别出一个单词后,若线性表或者二叉排序树中没有该单词,则在适当的位置上添加该单词;若该单词已经被识别,则增加其出现的频率。
4)统计结束后,删除出现频率低于五次的单词,并显示该单词和其出现频率。
5) 其余单词及其出现频率按照从高到低的次序输出到文件中(Outfile.txt),同时输出用两种方法完成该工作所用的时间。
6)计算查找表的ASL值,分析比较两种方法的效率。
2.代码提示:
二叉排序树的存储表示
typedef struct BSTNode{
string WordName; //单词名称
int count; //单词出现频率
struct BSTNode *next;
} BSTNode, *BSTree;
3.相关知识:
可参见教材《数据结构》(吴陈编著,科学出版社)上线性表和二叉排序树的相关算法。
以上为数据结构课程设计 实验预习全部内容
老师辛苦了。
192210902125 宋祖模