中南大学数据结构课程设计(附C源代码).docVIP

  • 22
  • 0
  • 约8.93千字
  • 约 21页
  • 2017-03-05 发布于重庆
  • 举报

中南大学数据结构课程设计(附C源代码).doc

中南大学数据结构课程设计(附C源代码)

中南大学 信息科学与工程学院 数据结构实验报告 题目: 简答编译器 专业班级: 电子信息1002 学号: 姓名: 指导老师: 李登 完成日期: 2012.6.30 一:问题描述 简单编译器 功能:输入一页,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出全部字母数、数字个数、空格个数、文章总字数(3)输出删除某一字符串后的文章; (1) 分行输出用户输入的各行字符每行最多不超过80个字符(2) 分4行输出全部字母数、数字个数、空格个数、文章总字数(3) 统计某一字符串在文章中出现的次数(4) 输出删除某一字符串后的文章; 三:数据结构的设计 拿到这个题目我最容易想到的就是用链表的数据结构来实现以上功能。首先我想到可以把一个字符作为一个节点,但是考虑到用户输入时,一行可能不会刚好有80个字符,而后面要求能够输出用户输入的内容。而如果我们用循环输出80个字符来构成一行,可能会把下一行的内容显示在上一行。因此考虑再三,把一行作为一个节点,一个节点最多存储80个字符,在节点内部一字符数组的形式存储文本。进过推敲这种结构能够满足以上要求。 地址 数据:str[0]str[1]str[2]……str[79] 指向下一节点的指针 四:软件模块结构图 按照要求,本程序大概需要以下几个函数:创建链表函数,输出链表函数,统计字符类型函数,统计指定字符串函数,删除指定字符串函数这5大函数。其中删除指定字符串函数分为2个函数实现,一个是删除第一次在链表出现的该字符串并得到一个新链表,另一个函数是循环调用上一个函数将新链表做处理直到完全删除该字符串。 各个模块的调用关系 主函数 选择界面 创建链表 输出链表 统计各个字符类型 统计指定字符串 删除指定字符串 退出 说明; 选择界面:选择提示界面,让用户选择接下来的操作; 创建链表:存储输入文本 输出链表:输出输入文本; 统计各个字符类型:统计文本中数字,字母,空格以及所有字符数; 统计指定字符串:统计指定字符串出现的次数; 退出:退出程序; 五:程序设计思想 我们将输入的每一行作为链表的一个节点,节点内部用数组存储。输出文本时只要把每一个节点都打印就可以实现,而统计文本中字符类型时也是先统计一个节点内的各个类型的数目,然后便利链表也可以实现,同理,统计指定字符串出现的次数也是如此。删除指定字符串时,先在每一个节点里删除相同的字符串,然后推广的整个链表中。 六:程序流程图 由以上我们可以把这个程序分为这几个模块:输入,输出,统计,查找,删除,菜单。下面给出主要模块的流程图。 输入模块 输出模块 七:源程序 具体代码附在一起上交的TXT文件中。 八:调试分析 十一:心得体会 本次课程设计中,我们用CFREE简单编写了一个编译器,之所以选择CFREE,而不用TC或者WINTC等,是因为TC对中文支持不是很好,如果输出汉字可能要用到点阵,而如果要输入一篇文章,那么代码是相当的多,而CFREE可以很好的支持中文。用这个编译器可以对输入的文字进行简单的处理,如统计,删改等。 这个程序的主题思想还是比较简单的,就是将输入的文本存储到链表中,通过对链表的操作来实现各个功能。例如把链表打印就是输出输入的的文本,而统计文本中指定字符串出现的次数可以修改书中链表的查找,统计各种字符的个数也是大同小异。删除某一个字符串后输出的功能可以通过几个简单功能的组合来实现,如查找,删除,打印等就可以实现。 现在说一下这个程序的优缺点。由于这个程序的每个功能都是用一个或者几个函数实现的,因此很容易拓展使其具有其他用户所要求的功能,只需要再写出相应的函数就可以。而其缺点也很多,例如输入时每行只能输入80个字符,操作不是很方便。还有删除某一个字符后输出存在明显的缺陷,

文档评论(0)

1亿VIP精品文档

相关文档