2021-06-19 DS课设日志

数据结构课设日志

图书信息管理系统的设计与实现

实验内容

设计并实现一个图书信息管理系统。根据实验要求设计该系统的菜单和交互逻辑,并编码实现增删改查的各项功能。 该系统至少包含以下功能:
(1) 根据指定图书个数,逐个输入图书信息;
(2) 逐个显示图书表中所有图书的相关信息;
(3) 能根据指定的待入库的新图书的位置和信息,将新图书插入到图书表中指定的位置;
(4) 根据指定的待出库的旧图书的位置,将该图书从图书表中删除;
(5) 能统计表中图书个数;
(6) 实现图书信息表的图书去重;
(7) 实现最爱书籍查询,根据书名进行折半查找,要求使用非递归算法实现,成功返回此书籍的书号和价格;
(8) 图书信息表按指定条件进行批量修改;
(9) 利用快速排序按照图书价格降序排序;
(10) 实现最贵图书的查找;

逻辑设计

1)使用的存储结构:链式存储结构
2)逻辑设计结构图

图书信息管理系统
输入图书信息Input
图书信息
8位书号
书名
价格<保留两位有效数字>
输出打印链表中存储的图书信息Print
图书信息
根据所给位置插入图书Insert
根据所给位置删除图书Delete
统计表中存储的图书信息条数Sum
表中信息去重Reduce
对表中信息进行查找
两本书信息一致保留前面搜寻到的并删除后面的结点
最爱图书查找Best
书名折半查找/非递归
成功则返回此书籍的书号和价格
对书籍信息进行批量操作Operator
按照图书价格对图书进行降序排序Sort
快速排序算法
实现最贵图书的查找Locate

隐式图的搜索——A*搜索

实验内容

编写九宫重排问题的启发式搜索(A*算法)求解程序。
在3х3组成的九宫棋盘上,放置数码为1~8的8个棋子,棋盘中留有一个空格,空格周围的棋子可以移动到空格中,从而改变棋盘的布局。根据给定初始布局和目标布局,编程给出一个最优的走法序列。输出每个状态的棋盘
测试数据:初始状态:123456780 目标状态:012345678

逻辑设计

在这里插入图片描述

比较
否<移动>
计算根节点的估价函数值f
将根节点加入close表
以根节点为父节点扩展子节点
计算所有子节点的估价函数值
选出子节点中估价函数值最小的结点<根节点>作为下一次扩展的父节点
close表表尾的状态是否等于目标状态
END得到路径

伪代码

创建两个表,OPEN表保存所有已生成而未考察的节点,CLOSED表中记录已访问过的节点。 

 计数起点的估价函数值;

 将起点放入OPEN表;

    while(OPEN!=NULL)

  {

    从OPEN表中取估价值f最小的节点n;

          if(n节点==目标节点){

          break;

           }

          for(当前节点n 的每个子节点n')

        {

          计算每个子节点n'的估价值;

               if(n' in OPEN)

             {

                 if( n'的估价值是OPEN表中的所有结点的估价值中最小的 ){

                把n设置为下一个父亲结点;

               更新OPEN表中的估价值; //取最小路径的估价值 

                      }

           }

         if(X in CLOSE) {

                 if( X的是父节点 ){

                将x插入到close表中;
                        }
               }

          if(X not inboth){

           把n设置为X的父亲;

           求X的估价值;

           并将X插入OPEN表中; //升序排列open

          }

     }//end for

  将n节点插入CLOSE表中;

  按照估价值将OPEN表中的节点排序; //实际上是比较OPEN表内节点f的大小,从最小路径的节点向下进行。

   }//end while(OPEN!=NULL)

 保存路径,即从终点开始,每个节点沿着父节点移动直至起点;

基于线性表和二叉树的低频词过滤系统

实验内容

对于一篇给定的英文文章,分别利用线性表和二叉排序树来实现单词频率的统计,实现低频词的过滤,并比较两种方法的效率。

逻辑设计

输入1
输入3
输入2
读入文件
读入文件
输入1
输入2
输入3
输入4
输入5
输入6
输入7
基于线性表和二叉树的低频词过滤系统
线性表
END
二叉排序树
链式存储结构
存储读入的单词
顺序查找
利用线性表存储读入的单词
表中是否有相同的字母
对应计数器++
存入新的结点
计数器置1
是否遍历结束
遍历整张表输出计数器的值小于5的单词
对整张表按计数器的值从大到小排序并输出到文本中
对整张表按照计数器的值进行二叉排序树的构建
连续执行23456至完毕
显示执行时间<使用c++提供的ctime函数库实现>
单步执行识别并统计单词
单步执行删除并显示出现频率低的单词
单步执行输出其余单词及其频率
单步执行计算并输出ASL值
返回主菜单
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值