首页 > 编程语言 >C/C++数据结构设计题[2023-06-04]

C/C++数据结构设计题[2023-06-04]

时间:2023-06-04 18:12:07浏览次数:58  
标签:编码 06 04 哈夫曼 C++ 停车场 功能模块 译码 停车位

C/C++数据结构设计题[2023-06-04]

停车场模拟管理程序的设计与实现

1.设计目的
理解线性表的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。
2.问题描述
设停车场只有一个可停放几辆汽车的狭长通道,只有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车辆开走,则排在便道上的第一辆汽车即可进入;当停车场内某辆汽车要开走时,由于停车场是狭长的通道,在它之后开入的车辆必须先推出车场为他让路,待车辆开出大门,为他让路的车辆再按原次序进入车场。试设计这样一个停车场模拟管理程序。
3.数据结构设计
(1)为了便于区分每辆汽车并了解每辆车当前所处的位置,需要记录汽车的牌照号码和汽车当前的状态。
(2)为了便于停车场的管理,要为每个车位分配一个固定的编号。
(3)当停车场的停车位上都已停满了汽车,又有新的汽车到来时要把它调度到便道上,便道上的车辆要按照进入便道的先后顺序顺次序放在便道上,为便道上的每个位置分配一个固定的编号。当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某个车位。
(4)当某辆车离开停车场的时候,比他后进停车位的车要为他让路,而且当他开走之后让路的车还要按照原来的停放次序再次进入停车位的某个车位上,为完成这项功能,定义一个结构体。
4.功能(函数)设计
本程序从总体上分为四个功能模块,分别为:
(1)程序功能介绍和操作提示模块
(2)汽车进入停车位的管理模块
(3)汽车离开停车位的管理模块
(4)查看停车场状态的查询模块
5.界面设计
6.编码实现
7.运行与测试
(1)连续有7辆汽车到来,牌照号分别为CF001、CF002、CF003、CF004、CF005、CF006、CF007,前5辆车应该进入停车位1-5车位,第6、7辆车应停入便道的1、2位置上。
(2)上面(1)中的情况发生后,让牌照CF003的汽车从停车场开走,应显示CF005、CF004的让路动作和CF006从便道到停车位的动作。
(3)随时检查停车位和便道的状态,不应该出现有空位而便道上还有车的情况。
(4)其它正常操作的一般情况。
8.设计完成后的思考

哈夫曼编/译码的设计与实现

一、 设计目的:
通过对简单哈夫曼编/译码系统的设计与实现来熟练掌握树型结构在实际问题中的应用。
二、 问题描述:
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。系统应该具有如下的几个功能:接收原始数据、编码、译码、打印编码规则。
三、 数据结构设计:
1、 构造哈夫曼树时使用顺序表作为哈夫曼树的存储结构。
2、 求哈夫曼编码时使用一维结构数组作为哈夫曼编码信息的存储。
四、 功能(函数)设计
1、 初始化功能模块
模块的功能为从键盘接收字符集大小n,以及n个字符和n个权值。
2、 建立哈夫曼树的功能模块
此模块功能为使用1中得到的数据按照构造哈夫曼树的算法构造哈夫曼树,即将HuffNode数组中的各个位置的各个域都添上相关的值,并将这个结构体数组存于文件中。
3、 建立哈夫曼编码的功能模块
此模块功能为从文件中读入相关的字符信息进行哈夫曼编码,然后将结果存入,同时将字符与0、1代码串的一一对应关系打印到屏幕上。
4、 译码的功能模块
此模块功能为接收需要译码的0、1代码串,按照3中建立的哈夫曼编码规则将其翻译成字符集中的字符所组成的字符串形式,存入文件,同时将翻译的结果在屏幕上打印输出。
五、 界面设计
六、 编码实现
七、 运行与测试
1、 利用下列数据调试程序:令叶子结点个数n为4,权值集合为{1,3,5,7},字符集合为{A,B,C,D},并有如下对应关系,A——1、B——3、C——5、D——7,调用初始化功能模块可以正确接收这些数据;调用建立哈夫曼树的功能模块,构造静态链表HuffNode的存储;调用建立哈夫曼编码的功能模块,在屏幕上显示如下对应关系:
A——111、B——110、C——10、D——0;调用译码的功能模块,输入代码串“111110100”后,屏幕上显示译码结果:111110100——ABCD
2、 用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THE PROGRAM IS MY FAVORITE”。

字符	A    B    C    D    E    F    G    H    I     J    K    L    M
频度	186  64    13   22    32   103  21    15   47   57    1    5    32    20
	
字符	N    O    P    Q    R    S    T     U    V   W    X    Y    Z
频度	57   63   15    1    48   51    80    23    8   18    1    16    1

源码

https://pan.baidu.com/s/1pq1Nwwo0hlc_J84F93HM4A?pwd=1111

标签:编码,06,04,哈夫曼,C++,停车场,功能模块,译码,停车位
From: https://www.cnblogs.com/codewriter/p/17456032.html

相关文章

  • 【题解】[ABC304F] Shift Table(容斥)
    【题解】[ABC304F]ShiftTable题目链接ABC304F题意概述Takahashi和Aoki将在接下来的\(N\)天里兼职工作。Takahashi这\(n\)天的出勤情况由字符串\(S\)表示,其中\(S\)的第\(i\)个字符是#则表示他在第\(i\)天工作,第\(i\)个字符是.表示他在第\(i\)天休息......
  • C# 编译异常CS0433
    编译后遇到nuget版本冲突:errorCS0433:类型“ShellFile”同时存在于“Microsoft.WindowsAPICodePack.Shell,Version=1.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”和“Microsoft.WindowsAPICodePack.Shell,Version=1.1.0.0,Culture=neutral,PublicKeyToken=nu......
  • C++面试八股文:struct、class和union有哪些区别?
    某日小二参加XXX科技公司的C++工程师开发岗位5面:面试官:struct和class有什么区别?小二:在C++中,struct和class的唯一区别是默认的访问控制。struct默认的成员是public的,而class的默认成员是private的。面试官:struct、class和union有哪些区别?小二:union和struct、class在内存布局上......
  • 【闲话】2023.06.04
    简单记一下最近的事。期末进步了,虽然还是不满意吧。尤其是物理和语文。但是!我英语小作文满昏!没考过这样的,孩子乐傻了。高考放高考假好耶。但是六点半的早读是一败笔。祝学长学姐高考顺利!后面忘了但是塞尔达传说:王国之泪是……......
  • Effective Modern C++(二)完美转发与移动语义
     移动语义使编译器有可能用廉价的移动操作来代替昂贵的拷贝操作。正如拷贝构造函数和拷贝赋值操作符给了你控制拷贝语义的权力,移动构造函数和移动赋值操作符也给了你控制移动语义的权力。移动语义也允许创建只可移动(move-only)的类型,例如std::unique_ptr,std::future和std::threa......
  • C++ chrono
    std::ratio表示一个单位时间。template<std::intmax_tNum,std::intmax_tDenom=1>classratio;Num是时间的分子,Denom是时间的分母。std::milli=std::ratio<1,1000>std::centi=std::<1,100>std::deci=std::<1,10>std::chrono::duration......
  • C++ java 启动器
    #include<Windows.h>#include<stdlib.h>#include<string>intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnShowCmd){//设置环境变量java_homestd::wstringjava_home=L"D:\\Tools\\jdk\......
  • 构建之法阅读笔记06
    通过学习软件工程这门课程以及阅读《构建之法》,我对BUG的概念有了新的更加正确的认识。我以前认为BUG就是软件的漏洞,故障,在软件进行正常运行时会出现不知名的错误。其实这种想法是不正确的,BUG是不能这样来定义的。软件行业有这样一句著名的笑话:(BUG)这不是缺陷,这是一个功能。所谓的B......
  • 构建之法阅读笔记04
    回归测试的目的是什么?1.验证新的代码的确改正了缺陷2.同时要验证新的代码有没有破坏模块的现有功能,有没有Regression。效能分析工具是什么?两种分析方法:1.抽样:程序运行时,VISUALSTUDIO时不时看一看这个程序运行在哪一个函数内,记录下来,最终得到一个关于程序运行时间分布的大致......
  • AtCoder Beginner Contest 304 ABCDE
    AtCoderBeginnerContest304感觉手速场,后\(80\)分钟纯纯坐牢,A-FirstPlayer一些人坐成一个环,从年龄最小开始输出名字constintN=2e5+10;intn;strings[N];inta[N];voidsolve(){intm=1e9+2,p=1;cin>>n;for(inti=1;i<=n;......