简单行编辑器 数据结构 课程设计汇总
简单的行编辑器课程设计

程序设计课程设计报告二00八年七月一号目录1……………………………………………设计目的2…………………………………………设计题目和要求3…………………………………………总体设计4…………………………………………详细设计5…………………………………………源程序清单和执行结果6…………………………………………总结1 设计目的设计一个简单的行编辑器,了解行编辑器的应用2 设计题目和要求题目:简单的行编辑器要求:1)设计一个简单的行编辑器,每行以回车结束2)数据以文件形式储存3)编辑器具有查找修改删除数据的功能3总体设计简单的行编辑器删除一行删除一行显示一行显示一行文件存盘文件存盘装入文件装入文件退出4 详细设计1)结构体的应用struct line{char text[81];int num; /*行号*/struct line *next; /*指向下一个输入项目的指针*/struct line *prior; /*指向前一个项目的指针*/};struct line *start; /*指向表中第一个项目的指针*/struct line *last; /*指向表中作后一个项目的指针*/struct line *find(int),*dls_store(struct line *);注:在结构体中分别声明项目指针及项目中的指针变量2)函数声明void patchup(int,int),delete_text(),list(),save(char *),load(char *);menu_select();enter(int linenum);注:在结构体外分别对输入、删除、显示等函数进行声明3)主函数和switch语句void main(int argc,char *argv[]){char s[80],choice,fname[80];// struct line *info;int linenum=1;start=NULL;last=NULL;if(argc==2) load(argv[1]);/*装入命令行上的文件*/do{choice=menu_select( );switch(choice){case 1:printf("\t行号:");gets(s);linenum=atoi(s);enter(linenum);break;case 2:delete_text();break;case 3:list();break;case 4:printf("\t文件名:");gets(fname);save(fname);break;case 5:printf("\t文件名:");gets(fname);load(fname);break;case 6:exit(0);}}while(1);}注:通过主函数分别对相应函数进行调用,利用switch选择语句来执行语句4)菜单函数menu_select(){char s[80];int c;printf("\t\t1.输入\n");printf("\t\t2.删除一行\n");printf("\t\t3.显示一行\n");printf("\t\t4.文件存盘\n");printf("\t\t5.装入文件\n");printf("\t\t6.退出\n");do{printf("\n\n\t\t请按数字选择:");gets(s);c=atoi(s);}while(c<0||c>6);return(c);}注:定义菜单显示内容,根据菜单要求运用程序5源程序和执行结果源程序:#include<iostream>#include "stdio.h"#include "stdlib.h"struct line{char text[81];int num; /*行号*/struct line *next; /*指向下一个输入项目的指针*/struct line *prior; /*指向前一个项目的指针*/};struct line *start; /*指向表中第一个项目的指针*/struct line *last; /*指向表中作后一个项目的指针*/struct line *find(int),*dls_store(struct line *);void patchup(int,int),delete_text(),list(),save(char *),load(char *); menu_select();enter(int linenum);void main(int argc,char *argv[]){char s[80],choice,fname[80];// struct line *info;int linenum=1;start=NULL;last=NULL;if(argc==2) load(argv[1]);/*装入命令行上的文件*/do{choice=menu_select( );switch(choice){case 1:printf("\t行号:");gets(s);linenum=atoi(s);enter(linenum);break;case 2:delete_text();break;case 3:list();break;case 4:printf("\t文件名:");gets(fname);save(fname);break;case 5:printf("\t文件名:");gets(fname);load(fname);break;case 6:exit(0);}}while(1);}/* 显示菜单,供用户选择*/menu_select(){char s[80];int c;printf("\t\t1.输入\n");printf("\t\t2.删除一行\n");printf("\t\t3.显示一行\n");printf("\t\t4.文件存盘\n");printf("\t\t5.装入文件\n");printf("\t\t6.退出\n");do{printf("\n\n\t\t请按数字选择:");gets(s);c=atoi(s);}while(c<0||c>6);return(c);}/*将文本插在指定行端部*/enter(int linenum){struct line *info;//char t[81];for(;;){/* */info=(struct line *)malloc(sizeof(struct line));if(!info){printf("\t! 内存不够!\n");return(NULL);}printf("%d:",linenum);gets(info->text);info->num=linenum;if(*info->text){if(find(linenum)) patchup(linenum,1);if(*info->text) start=dls_store(info);}else break;linenum++;}return(linenum);}/*当文本内容插在文件中间时其下面的内容的行号必须增加1,而*/ /*删除时,被删除的文本后面的行号必须减1 */void patchup(int n,int incr){struct line *i;i=find(n);while(i){i->num=i->num+incr;i=i->next;}}/*按行号排序后插入*/struct line *dls_store(struct line *i){struct line *old,*p;if(last==NULL){i->next=NULL;i->prior=NULL;last=i;return(i);}p=start;old=NULL;while(p){if(p->num){old=p;p=p->next;}else{if(p->prior){p->prior->next=i;i->next=p;p->prior=i;return start;}i->next=p;i->prior=NULL;p->prior=i;return(i);}}old->next=i;i->next=NULL;i->prior=old;last=i;return start;}/*删除一行*/void delete_text(){struct line *info;char s[80];int linenum;printf("\t行号:");gets(s);linenum=atoi(s);info=find(linenum);if(info){if(start==info){start=info->next;if(start) start->prior=NULL;else last=NULL;}else{info->prior->next=info->next;if(info!=last)info->next->prior=info->prior;else last=info->prior;}free(info);patchup(linenum+1,-1);}}/*查找一行文本*/struct line *find(int linenum){struct line *info;info=start;while(info){if(linenum==info->num) return(info);info=info->next;}return(NULL);}/*显示文本*/void list(){struct line *info;info=start;while(info){printf("%d:%s\n",info->num,info->text);info=info->next;}printf("\n\n");}/*存文件*/void save(char *fname){struct line *info;char *p;FILE *fp;if((fp=fopen("text.txt","w"))==NULL){printf("\t文件打不开!\n");exit(0);}printf("\t正在存入文件:\n");info=start;while(info){p=info->text;while(*p) putc(*p++,fp);//putc('\r',fp);putc('\n',fp);info=info->next;}fclose(fp);}/*装入文件*/void load(char *fname){struct line *info,*temp;char *p;FILE *fp;//int t,size,inct;int size,inct;if((fp=fopen("text.txt","r"))==NULL){printf("\t文件打不开!\n");exit(0);}while(start){temp=start;start=start->next;free(temp);}printf("\n\t正装入文件!\n");size=sizeof(struct line);start=(struct line*)malloc(size);if(!start){printf("\n\t内存已经用完!");return;}info=start;p=info->text;inct=1;while((*p=getc(fp))!=EOF){p++;while((*p=getc(fp))!='\n') p++;//getc(fp); /*丢掉'\n' */*p='\0';info->num=inct++;info->next=(struct line*)malloc(size);if(!info->next){printf("\n\t内存已经用完!");return;}info->prior=temp;temp=info;info=info->next;p=info->text;}temp->next=NULL;last=temp;free(info);start->prior=NULL;fclose(fp);}执行结果:6 总结我们所做的每一道程序设计题基本涵盖了我们一学年的课程知识,而我侧有些力不从心,很多地方生疏不知,大部分程序借鉴他人,这一点我还需改进,不过通过此次课程设计,我对程序设计这门课程又有了新的理解。
C++课程设计简单行编辑器

目录第一章课程设计的目的和要求 (1)1.1 课程设计的目的 (1)1.2 课程设计的要求 (1)第二章课程设计任务内容 (3)2.1 课程设计要求 (3)2.2 功能需求 (3)2.3 功能模块图 (4)第三章详细设计说明 (5)3.1 程序设计思路 (5)3.2 函数说明 (5)3.2.1 main()主函数 (5)3.2.2 menu_select菜单选择函数 (7)3.2.3 enter输入函数 (8)3.2.4 delete_text删除函数 (9)3.2.5 find函数 (10)3.2.6 list函数 (11)3.2.7 save函数 (12)3.2.8 load函数 (12)3.3 调试 (14)第四章软件使用说明 (15)第五章课程设计心得与体会 (18)附录1 参考文献 (19)附录2 程序清单 (20)简单的行编辑器第一章课程设计的目的和要求此章节详细介绍了课程设计的目的和要求。
1.1 课程设计的目的课程设计的目的是通过实践环节的训练,使学生进一步加深对C语言知识的综合理解,提高C语言应用技能,并结合专业特点培养学生计算机程序的应用能力。
结合计算机科学专业的特点是培养学生阅读本专业相关领域C语言程序的能力,分析并掌握程序的设计思想和方法。
通过课程设计,培养学生查阅C语言相关资料能力、分析和阅读程序的能力,应用C语言基本知识设计小型应用程序的能力。
其中,需要掌握C语言中的结构体,指针,函数(系统函数,自定义函数),文件操作等知识,通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境的进一步认识和综合编程能力。
在学习课程设计之前,要掌握好程序设计的基本概念、方法和思维方式。
开发程序的目的是为了解决问题,而解决问题首先需要找出合适的解决方案,然后用合适的语言把方案描述出来。
显然,该过程的关键是分析问题并找出解决方案,而不是描述方案。
因此,程序设计的首要目标,是培养解决问题的基本思维方式,其次才是语言知识。
简单的行编辑器

计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:简单的行编辑器姓名:学号:专业班级:软件工程软件102 系(院):计算机工程学院设计时间:设计地点:软件工程实验室、教室<2>用户可从键盘上输入字符,以*结尾表示输入字符结束,界面上会输出用户输入的字符,以及行编辑的功能选择项。
(如输入如下字符beijing huan ying ni *)<3>输入选择1,则依次输出:字母个数:17数字个数:0空格个数:4字符总数:21是否继续使用(Y/N):<4.1>选择Y,则出现行编辑器的功能选择,<4.2>如果第三步结束选择N,则输出**********谢谢使用**********<,再次需要进行行编辑器功能选择:输入选择2;则输出“请输入要统计的某一字符”提示用户输入要查找的字符假如输入i;则输出:i在文章中出现次数为:4;是否继续使用(Y/N)<**********谢谢使用**********<则输出行编辑器的功能选择项目;选择3;输出“请输入要删除子串的起始位置和长度:”提示用户输入,如果输入0 7输出“删除某一子串后:”huan ying ni**********谢谢使用**********<5>其他字符测试;例如用户输入:beijing BEIJING 520*输出字母个数:14数字个数:3空格个数:2字符总数:19统计字符i出现次数为2;删除从8号位器长度为7的字串后输出字符为beijing 520五用户手册1.运行程序,首先出现主界面。
主界面首行显示“欢迎使用文本编辑器”,输出提示信息“请输入要编辑的字符”,然后界面显示用户输入的字符。
然后主界面文本编辑器的功能菜单,功能菜单包括三个选项:选项一:统计字数,选择该项可进字数统计,当用户输入字符结束后,选择功能选项一,主界面回自动统计各字符数,然后输出。
2;选项二:统计出现次数,选择该项可进行对文章中某一字符出现字数的统计,当用户选择功能二时,主界面回输出提示信息,提示用户输入要统计的字符,用户可从键盘任意输入字符,以回车键结束。
简单行编辑课程设计

简单行编辑课程设计一、教学目标本课程的目标是让学生掌握简单文本编辑的基本知识和技能,培养他们独立进行文本编辑的能力,并提高他们对计算机操作的兴趣和信心。
具体目标如下:知识目标:使学生了解文本编辑的基本概念、原理和方法,包括文本的插入、删除、复制、粘贴等功能;掌握常用的文本编辑软件的使用方法,如Notepad、Word等。
技能目标:培养学生能够熟练运用文本编辑软件进行文本的编辑和排版,能够运用基本的查找和替换功能,掌握简单的代码编写和运行。
情感态度价值观目标:通过文本编辑的学习,使学生感受到计算机技术的实用性和趣味性,增强他们对计算机技术的热爱和探索精神,培养他们独立思考和解决问题的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.文本编辑的基本概念和原理:介绍文本编辑的概念、原理和方法,使学生了解文本编辑在计算机应用中的重要性。
2.文本编辑软件的使用:详细讲解常用的文本编辑软件如Notepad、Word的使用方法,包括文本的插入、删除、复制、粘贴等功能。
3.文本的排版和格式设置:介绍如何进行文本的排版和格式设置,使学生能够熟练掌握文本编辑软件的排版功能。
4.代码编写和运行:讲解简单的代码编写和运行,使学生了解计算机编程的基本过程,培养他们的编程思维。
三、教学方法为了提高教学效果,我们将采用多种教学方法相结合的方式进行教学:1.讲授法:通过讲解文本编辑的基本概念、原理和方法,使学生了解文本编辑的基础知识。
2.案例分析法:通过分析实际案例,使学生掌握文本编辑软件的使用方法和技巧。
3.实验法:让学生亲自动手进行文本编辑的实践,培养他们独立进行文本编辑的能力。
4.讨论法:学生进行小组讨论,分享学习心得和经验,提高他们的合作能力和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用适合学生程度的文本编辑教材,为学生提供系统的学习材料。
2.参考书:提供相关的参考书籍,丰富学生的学习资源。
简单行编辑器 数据结构 课程设计

简单行编辑器数据结构课程设计概述:本文旨在设计一种简单的行编辑器,以满足基本的文本编辑需求。
行编辑器是一种常见的文本编辑工具,它允许用户在文本中进行插入、删除、挪移光标等操作。
为了实现这一目标,我们将采用数据结构来管理文本的存储和操作。
1. 数据结构设计:1.1 文本存储:我们可以使用链表作为文本的基本数据结构,每一个节点存储一个字符。
链表的每一个节点包含一个字符和指向下一个节点的指针。
这样的设计可以方便地进行插入和删除操作,同时保持文本的顺序。
1.2 光标位置:光标的位置可以用一个指针指向链表中的某个节点。
这个指针可以指向一个字符之前、之后或者字符本身的位置。
通过挪移光标指针,用户可以在文本中进行插入、删除和挪移操作。
2. 功能实现:2.1 插入操作:用户可以在光标当前位置插入一个字符。
插入操作包括以下步骤:- 创建一个新节点,存储要插入的字符。
- 将新节点插入到光标所在节点的前面或者后面,更新链表的指针。
2.2 删除操作:用户可以删除光标当前位置的字符。
删除操作包括以下步骤:- 找到光标所在节点。
- 更新链表的指针,将光标所在节点从链表中移除。
2.3 光标挪移操作:用户可以通过挪移光标来改变插入和删除操作的位置。
光标挪移操作包括以下步骤:- 根据用户输入的指令,将光标指针向前或者向后挪移一个节点。
2.4 文本显示:用户可以查看当前编辑的文本内容。
通过遍历链表,将字符挨次输出即可。
3. 用户界面设计:为了方便用户操作,我们可以设计一个简单的用户界面,包括以下组件:- 文本显示区域:显示当前编辑的文本内容。
- 光标位置指示器:显示光标当前位置。
- 命令输入框:接收用户输入的命令。
4. 实例演示:假设用户输入以下命令序列:- 插入字符 'A':光标指向开头,文本变为 "A"。
- 插入字符 'B':光标指向 'A' 后面,文本变为 "AB"。
简单行编辑系统课程设计

cprintf("%c",179);
}
for(i=1;i<=11;i++)
{
gotoxy(46+i,2);
if(value==0) value=300; /*此value为局部变量*/
{
case 0:gotoxy(22,3); cprintf(" Open "); break;
case 1:gotoxy(22,4); cprintf(" Save "); break;
case 2:gotoxy(22,5); cprintf(" Exit "); break;
{
case 0:gotoxy(47,3); cprintf(" del "); break;
case 1:gotoxy(47,4); cprintf(" insert "); break;
{
gotoxy(21,1+i);
cprintf("%c",179); /*窗口内文本的输出函数,在窗口左边输出 | */
gotoxy(32,1+i);
cprintf("%c",179); /*窗口内文本的输出函数,在窗口右边输出 | */
gotoxy(47,3); cprintf(" del ");
gotoxy(47,4); cprintf(" insert ");
gotoxy(47,5); cprintf(" change ");
}
简单行编辑

电子信息工程学院
课程设计报告
设计名称:数据结构课程设计
简单行编辑程序
姓名:学号:
专业班级:电子信息工程学院
系(院):
设计时间:
设计地点:EDA实验室
要打开的文件内容显示出来。
3.在执行“5.Open the file”时,输入想要打开文件的正确路径,回车。
如果想要打开的文件不存在,则跳出运行。
4.在进行保存文件的操作时,在提示后输入想要保存的正确路径名,再按回车,文件即被保存。
六测试成果
图(1):
图(2):
图(3):
图(4):
七附录(源程序清单)
#include "stdio.h"
#include "stdlib.h" #include "string.h" struct line{。
数据结构课程设计——简单行编辑程序

数据结构课程设计——简单行编辑程序电子信息工程学院课程设计报告设计名称: 数据结构课程设计简单行编辑程序姓名: 学号:专业班级: 电子信息工程学院系 (院):设计时间:设计地点: EDA实验室指导教师评语:成绩:签名:年月日数据结构课程设计报告第 1 页,共 15 页1(课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。
2(课程设计任务与要求:任务问题描述:文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。
限制这些操作以行为单位进行的编辑程序称为行编辑程序。
被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法即不经济,又不总能实现。
一种解决方法是逐段的编辑。
任何时刻只把待编辑文件的一段放在内存,称为活区。
试按这种方法实现一个简单的行编辑程序,设文件每行不超过320个字符,很少超过80个字符。
要求:实现以下4条基本的编辑命令:(1)行插入。
格式:i<行号><回车><文本>. <回车>将<文本>插入活区中第<行号>行之后。
(2)行删除。
格式:d<行号1>[<空格><行号2>.]<回车>例如删除活区中第<行号1>行(到第<行号2>行)。
例如:例如:“d10?”和d1014?”。
(3)活区切换。
格式:n<回车>将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国矿业大学徐海学院计算机系《软件认知实践》报告姓名:学号:专业:设计题目:简单行编辑器指导教师:2012年12月25目录第1章题目概述 (1)第1.1节题目要求 (1)第1.2节主要难点 (2)第2章系统流程图 (3)第3章数据结构和算法 (4)第4章核心代码分析 (6)第5章复杂度分析 (10)第6章总结 (11)参考文献 (13)第1章题目概述在这次课程设计中我选的题目是文本编辑,文本编辑几乎是每个使用电脑的人都会遇到的问题,特别是网络小说作家们。
在文本的编辑中,我们会时常遇到文本信息的统计问题、小型子串的查找问题、子串的查找和删除问题等。
如果靠人自己去观察和执行相关操作的话,不仅累人,而且很容易出错。
而使用计算机程序去实现的话,则会省力不少,而且相对来说非常精确。
本程序使用了较快速的查找算法,可以大大提高检索的效率,相信这可一极大的方便用户用电脑编辑文本文件。
第1.1节题目要求文章编辑功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;实现功能(1)文章内容的输入:包括字母、标点符号、数字等;(2)文章内容的统计:包括文章中大写字母、小写字母、数字、标点符号、空格以及文章所有字数的个数的统计;(3)文章内容的处理:包括对文章内容的查找、删除以,其中在查找的过程中统计出该字符或字符串在文章中出现的次数;第1.2节主要难点本程序是对一段英文文章的内容进行处理,存储方式采用链式存储,没有文件操作,故本程序对其文本内容的所有操作都是在链表中进行的。
对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中,在此部分设计中最大的问题在于输入文章过程中输入的字符数大于80时如何换行;对于文本内容的统计,使用循环对已存储的文章进行匹配,大写字母数、小写字母数、空格数、数字数直接通过比较即可得到,标点符号通过ASCⅡ比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数及位置并输出个数及位置。
删除部分先使用程序的查找功能对文章中需要删除的字符或者字符串进行查找,然后对其进行删除。
文本编辑的基本内容为查看文本文件内容,统计内容基本信息,查找子串是否存在及其出现次数,查找并删除所有的相关子串并重新输出文本内容等等。
第2章系统流程图第3章数据结构和算法1、定义结构体 struct line,文本行采用顺序存储,行与行之间采用链式存储.2、主要函数:int FindString(LINE * &head,char *str) /*统计str在文章中出现的次数*/求在一行中Str出现的次数的流程图:①.查找第一个字符,如果有第一个字符即p->data[i]==str[0],设计数器k=0②.查找这个字符后面的字符与要查找的字符串是否匹配即p->data[i+j]==str[j],如果匹配k++③.重复第二步,如果k=len2,则查找到,count++;如果没查找到,重新进行第一步。
void delstringword(char *s,char *str) /*删除字符串*s 中的字符串*str*/实现思想:①.从字符串s 中寻找str 第一次出现的位置 *p=strstr(s,str);②.len=strlen(s);i=len-strlen(p)即前i 项恰好不含要删除的字符串,将前i 项复制到tmp 中③.j=i+strlen(str) 即要删除的字符串在i+1和j 之间,将j 之后的字符串复制到tmp 中④.将tmp 赋给串s ,返回s输入文章时,以Ctrl+E(^E)为结尾,当tmp[0]==5时,发现输入 ^E ,则退出输入。
输出时文章时,如果tmp[strlen(tmp)-1]==5即发现表示结束的字符^E ,用p->data[strlen(tmp)-1]='\0'除去最后一个控制符 ^E 。
stmp[count++]=s[m];tmp[count++]=s[n];tmp第4章核心代码分析1.typedef struct line{char *data;struct line *next;}LINE; /*创建一链表,同时向里面输入文本数据*/2./*统计字母数*/int CountLetter(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data); /*计算当前 data 里的数据元素的个数*/for(int i=0;i<Len;i++)if((p->data[i]>='a'&&p->data[i]<='z')||(p->data[i]>='A'&&p->d ata[i]<='Z')) /*计算字母数*/count++;}while((p=p->next)!=NULL); /*遍历链表*/return count; /*返回文章的字母总数*/}/*统计数字数*/int CountNumber(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data); /*计算当前 data 里的数据元素的个数*/for(int i=0;i<Len;i++)if(p->data[i]>=48 && p->data[i]<=57)count++;/*计算数字数,ASCII码*/}while((p=p->next)!=NULL); /*遍历链表*/return count;}/*统计空格数*/int CountSpace(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data); /*计算当前 data 里的数据元素的个数*/for(int i=0;i<Len;i++)if(p->data[i]==32)count++; /*计算空格数,空格ASCII码为32*/ }while((p=p->next)!=NULL); /*遍历链表*/return count;}/*统计文章的总字数*/int CountAll(LINE * &head){LINE *p=head; /*保存链表的首地址*/int count=0;do /*计算总字符数*/{count+=strlen(p->data);}while((p=p->next)!=NULL); /*遍历链表*/return count;}/*统计str在文章中出现的次数*/int FindString(LINE * &head,char *str){LINE *p=head;int count=0;int h=0;int len1=0; /*保存当前行的总字符数*/ int len2=strlen(str); /*待统计字符串的长度*/ int i,j,k;do{len1=strlen(p->data); /*当前行的字符数*/for(i=0;i<len1;i++) /*字符匹配*/{if(p->data[i]==str[0]){k=0;for(j=0;j<len2;j++)if(p->data[i+j]==str[j]) k++;if(k==len2) {count++;i=i+k-1;}}}}while((p=p->next)!=NULL); /*遍历链表*/ return count;}第5章复杂度分析本算法的空间复杂度很低,空间复杂度为O(N)。
但是本算法的时间复杂度比较高,输出函数、查找函数算法时间复杂度均为O(N),但是删除函数算法的时间复杂度较高。
我暂时还问想到时间复杂度更小的算法,因此在这里我无法对该算法进行优化。
第6章总结为期一周的课程设计结束了,在这一周里我完成了编写文本编辑程序的任务。
任务书上要求是对输入的信息进行操作,自己开始是不知道该向什么方向去努力,自己应该如何去编写这个程序,后来通过对照着任务书上的要求和到网上查找相关资料,慢慢找到了感觉。
所以自己在整个课程设计的编写程序过程中遇到的困难及问题都通过查阅资料、向老师提问得以解决。
本次课程设计自己最大的体会就是不管写什么程序,自己首先得对这个问题要分析透彻,要知道自己要干什么,然后才能让自己干什么。
通过本次课程设计,我学到了很多:增强了查阅相关参考资料的能力,独立分析解决问题的能力;自己的上机动手的能力和对课程设计的理解,得到很多启示;课程设计为我们提供了一个即动手又动脑、独立实践的机会,将课本上的知识理论和实际有机的结合起来,锻炼了我们的分析解决实际问题的能力。
这次课程设计使我我对数据逻辑结构的特点和存储表示方式的有了更深的了解和认识,培养了我在具体应用中选择合适的数据结构和存储结构的能力,同时也使我认识到自己在学习编程方面还有很多的不足。
今后我要多读一些纺织方面的书籍,不能只拘泥于课本上的知识,并注重理论与实践的结合,多上机练习编写程序,提高自己的实际动手能力和独立思考的能力,不断充实自己,更好的掌握编程思想。
参考文献[1] 严蔚敏、吴伟民主编,《数据结构》(C语言版),清华大学出版社,2002。
[2] 殷人昆等著,《数据结构》(C++版),清华大学出版社,2001。
[3] 金远平著,《数据结构》(C++描述),清华大学出版社,2005。
[4] 许卓群等著,《数据结构与算法》,高等教育出版社,2004。
[5] Frank M.Carrano等著, 《数据结构与C++高级教程》,清华大学出版社,2004。