zoukankan      html  css  js  c++  java
  • 数据结构(c)试验题目汇总

     试验一:栈和队列的应用—— 模拟停车厂管理                                  参考

    Code


     

     试验二:一元多项式运算器                                                      参考
     

    10.1.2  一元多项式运算
     一.问题描述
     设计一个简单的一元稀疏多项式加法运算器。
     二.基本要求
     一元稀疏多项式简单计算器的基本功能包括:
     1.按照指数升序次序,输入并建立多项式A与B。
     2.计算多项式A与B的和,即建立多项式A+B。
     3.按照指数升序次序,输出多项式A、B、A+B。
     三.提示与分析
     1.一元n次多项式:P(x,n)=P0+P1X1+P2X2+…+PnXn,其每一个子项都是由“系数”和“指数”两部分来
    组成的,因此可以将它抽象成一个由“系数、指数对”构成的线性表,其中,多项式的每一项都对应于线性表中的一个数据元素。由于对多项式中系数为0的子项可以不记录它的指数值,对于这样的情况就不再付出存储空间来存放它了;基于此,可以采用一个带有头结点的单链表来表示一个一元多项式。
     2.数据类型定义可描述如下:

      typedef struct pnode{
             
    int  coef;             /*系数域*/
             
    int  exp;              /*指数域*/
             
    struct pnode  *next;   /*指针域,指向下一个系数不为0的子项*/
      }PolyNode, 
    *PolyLink;
      PolyLink  A, B, C;            
    /*单链表存储的多项式A、B、C*/

     3.基本功能分析
     (1)输入多项式,建立多项式链表
     首先创建带头结点的单链表;然后按照指数递增的顺序和一定的输入格式输入各个系数不为0的子项:“系数、指数对”,每输入一个

    子项就建立一个结点,并将其插入到多项式链表的表尾,如此重复,直至遇到输入结束标志的时候停止,最后生成按指数递增有序的链表。
     (2)多项式相加
     多项式加法规则:对于两个多项式中指数相同的子项,其系数相加,若系数的和非零,则构成“和多项式”中的一项;对于指数不同

    的项,直接构成“和多项式”中的一项。
     将(1)中单链表表示的两个多项式A和B相加,运算的结果是利用原表空间生成一个新链表,表示和多项式C。运算规则如下:
     设指针pa、pb分别指向多项式链表A、B的第一个结点,比较pa、pb所指两结点中的指数项:
     ① 若pa->exp < pb->exp,则将pa所指结点插入到“和多项式”链表中去;
     ② 若pa->exp > pb->exp,则将pb所指结点插入到“和多项式”链表中去;
     ③ 若pa->exp== pb->exp,则计算系数和pa->coef+pb->coef,若和非零,插入到“和多项式”链表中去,删除pb所指结点;否则删

    除pa、pb所指结点。
     继续比较下一项,重复上述过程,直至A、B中某一链表结束,此时将非空链表中剩余的结点出入到“和多项式”链表即可。
     (3)多项式的输出
     可以在文本界面下,采用类似于数学表达式的方式输出多项式,如多项式A可显示为:
     A=3+6X32X8+12X20
     需要注意:
     系数值为1的非零次项的输出形式中略去系数1,如子项1x8的输出形式为x8,项-1x3的输出形式为-x3。
     多项式的第一项的系数符号为正时,不输出“+”,其它项要输出“+”、“”符号。
     四.测试数据
     1.(x+3x6-8.6x11)+(6-3x6+21x9)=6+x+21x9-8.6x11
     2.(3x-3-x+4.1x2-1.2x9)+(―3x―3-5.1x2 +7.8x12)=-x-x2-1.2x9+7.8x12
     3.(x+x3)+(―x―x3)=0
     4.(x+x100)+(x100+x200)=(x+2x100+x200)
     5.(x+x2+x3)+0=x+x2+x3
     五.选作内容
     1.计算多项式A与B的差,即建立多项式A-B;
     2.计算多项式A的导函数Aˊ。
     3.计算多项式A与B的积,即建立多项式A×B;
     4.输入多项式时可以按任意次序输入各项的数据,不必按指数有序;在算法中实现建立按指数有序的多项式。
     5.多项式的输出形式采用图形界面,通过调整指数应该出现的坐标位置来表示指数形式,如X+2X2-3X100的形式。

    实验三:教学计划编排
    一、需求分析
    1.程序的功能:
    大学中的每个专业都有几十门基础课程,专业课程以及选修课程,学生必须分几个学期完成这些课程才能毕业。教学计划的制定要求合理的编排这些课程,使学生能够顺利的进行学习。(这些课程中,有的是独立于其他课程的基础课,有些却需要其他先行课程。一般4年制本科教学前七个学期进行理论课程的学习,第八个学期实习。必须充分考虑这些因素。)
    输入课程的信息,按照顺序排出四学年7个学期中每个学期要修的课程。
    2.输入输出的要求:
    教学计划的输出:可以将教学计划输出到用户制定的文件中,也可以制定合适的表格显示在屏幕上。
    基本要求:各学期课程门数,学分的分布较均匀。
    输入课程的信息(序号,名称,学分,先修课程),输出每个学期所要修习科目的课序号。

    实验四:哈夫曼编码
    一、需求分析
    1.程序的功能;
    1)初始化:从键盘接收字符集大小n,以及n个字符。
    2)建立哈夫曼树:构造哈夫曼树,即将Hnode数组中的各个位置的各个域都添上相关的值,并将这个结构体数组存放于文件Htree.txt中。
    3)构造哈夫曼编码:先从文件Htree.txt中读入相关的字符信息进行哈夫曼编码,然后将结果存入Hnode.txt中,同时将字符与0,1代码串的一一对应关系打印到屏幕上。
    4)编码:利用已构造的哈夫曼编码(Hnode.txt)对文件SourceFile.txt(明文)中的正文进行编码,然后将结果存入文件CodeFile.txt(密文)中。
    5)译码:将文件CodeFile.txt(密文)中的代码按照3)中建立的编码规则将其翻译成字符集中字符所组成的字符串形式,进行译码,结果存入文件TextFile.txt(明文)中。(如果正确,TextFile.txt的内容与SourceFile.txt的内容一致。)
    6)打印哈夫曼树:从Hnode数组中读入相关的结点信息,一凹入表方式将各个结点及叶子结点的权值和左分支上的0和右分支上的1画出来。
    2.输入输出的要求:
    从键盘输入字符集大小n,以及n个字符;电文内容由键盘输入,明文,译码,及编码都要保存(即输出)到相应文件中。
    3.测试数据。
    1)令叶子结点个数N为4,权值集合为{1,3,5,7},字符集合为{A,B,C,D},且字符集与权值集合一一对应。
    2)令叶子结点个数N为7,权值集合为{12,6,8,18,3,20,2},字符集合为{A,B,C,D,E,F,G},且字符集与权值集合一一对应。
    3)自行选定一段英文文本,统计给出的字符集,实际统计字符的频率,建立哈夫曼树,构造哈夫曼编码,并实现其编码和译码

    试验五:简单个人图书管理系统

    程序的功能
    基本要求:保存图书的各种相关信息:出版日期,书号,书名,作者,图书类别编号,价格等。
    查找功能:按照多种关键码查找需要的书籍,查找成功后可以修改记录的相关项。
    排序功能:按照多种关键码对所有的书籍进行排序,例如按购买日期排序,按图书类别排序等。
    显示图书信息。
    其他辅助的维护工作。
    基本功能:
    1)初始化:清空books数组;进入输入状态,接收键盘输入的全部数据,并保存在books数组中,按某种顺序输入记录。
    插入:接收从键盘输入的一条新纪录,按某种顺序(如作者,出版日期等)插入到books数组中。
    删除:接收从键盘输入的一本书的信息(如书名,书号,作者等),在books数组中查找,如找到则从books数组中删除该记录,否则显示未找到。
    更新:接收从键盘输入的一本书的信息,在books数组中查找,如找到则显示该记录的原始数据,并提示键盘输入新数据以替换原有数据,如未找到则显示“未找到”。
    统计:统计每类书籍的数量,显示统计结果。
    排序:对books数组中所有记录按“类别”排序,类别相同的按“书名”排序(字典序),显示排序结果。
    测试数据:读者根据实际情况自行制定。
    概要设计
    1.本程序所用的抽象数据类型的定义;

     1 #define MaxNum 500
     2 typedef struct
     3 {  
     4    int year,month,day;
     5 }DATE;
     6 typedef struct
     7 {
     8    DATE date;
     9    int num;
    10    char name[20];
    11    char author[8];
    12    int type;
    13    float price;
    14 }BOOK;
    15 BOOK books[MaxNum];
    16 

    2.主模块的流程及各子模块的主要功能;
    3.模块之间的层次关系。


  • 相关阅读:
    chrome 浏览器设置useragent为微信浏览器
    js 16进制颜色和RGBA颜色互转
    json parse 大数精度丢失
    taro 小程序react 搜索高亮关键字
    sourcetree 配置 openssh
    一次性卸载npm本地包(node_modules)依赖
    微信小程序订阅消息开发总结
    微信小程序请求设置权限
    taro
    浅谈JS之AJAX
  • 原文地址:https://www.cnblogs.com/liulei/p/1360826.html
Copyright © 2011-2022 走看看