1、数据结构与算法分析课程设计报告数据结构与算法分析课程设计报告 课题名称课题名称: : 1.1. txt 编译器 2.2. 带括号的算术表达式求值 3.3. Huffman 编码(二叉树用) 4 4. . 课表拓扑排序 提交文档学生姓名: 提交文档学生学号: 同组 成 员 名 单: 指导 教 师 姓 名: 指导教师评阅成绩: 指导教师评阅意见: . . 提交报告时间:2013 年 1 月 6 日 实验一: 1. 实验的目的和要求: 采用 C+的 ASCII 码文件和串函数实现; 熟练掌握串运算的应用; 熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、链接和运行一个 C+程 序; 上机调试程
2、序,掌握查错、排错使程序能正确运行。 2. 实验的环境: 硬件环境: Windows XP 操作系统 软件环环境: Microsoft Visual Studio C+6.0 3. 算法描述: 类的层次结构 Editor Next_line();goto_line();insert_line();substitute_line();change_line();read_file(); write_line();find_string(); 测试程序说明 按行读取文件-显示文本内容-删除指定行-在指定行插入-显示指定行内容 4. 源程序清单:(程序文字:6 号字体,行距 12 磅) #inclu
3、de #include #include #include #include using namespace std; /*链表的节点。保存文件中一行的内容*/ struct Line int id; string content; struct Line* next; ; class TextEditor public: / 文件中一行最多的字符数 enumMAX_SIZE_PER_LINE = 10000; /* 构造函数 参数: fileName 文件路径 */ TextEditor(string fileName); /* 打印文件内容 */ void print(); /* 保存文件
4、 */ void save(); /* 为文件增加一行 参数: lineIndex 要增加的行所在行号 content 要增加的行的内容 返回: 添加成功返回 true ,否则返回 false */ bool addLine(int lineIndex,string content); /* 为文件删除一行 参数: lineIndex 要删除的行所在行号 返回: 删除成功返回 true ,否则返回 false */ bool deleteLine(int lineIndex); /* 为文件修改一行 参数: lineIndex 要修改的行所在行号 content 要修改的行的修改后的内容 返回
5、: 修改成功返回 true ,否则返回 false */ bool modifyLine(int lineIndex,string content); /* 搜索文件中的行 参数: keyword 要搜索的行含有的关键字 返回: 搜索结果,是一个链表 */ struct Line * searchLines(string keyword); /* 查询文件的总行数 返回: 文件的总行数 */ int getNumOfLines(); private: / 文件路径 string fileName; / 链表形式,按行存储文件在内存中 struct Line * artical; ; TextEditor:TextEditor(string fileName) this-fileName = fileName; this-artical = NULL; ifstream fin(this-fileName.c_str(); if(fin) int lineId = 0; struct Line * pr, *p; char *buffe = new charMAX_SIZE_PER_LINE+1; while(!fin.eof() p = new struct Line(); / 生成行号 p