1 / 28
文档名称:

文章编辑(数据结构课程设计).doc

格式:doc   大小:546KB   页数:28页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

文章编辑(数据结构课程设计).doc

上传人:雾里行舟 2019/3/21 文件大小:546 KB

下载得到文件列表

文章编辑(数据结构课程设计).doc

文档介绍

文档介绍:Forpersonaluseonlyinstudyandresearch;mercialuse芄艿课程设计报告肀蒇肂蚁蕿芇肃课程设计题目:文章编辑螀羈蚃膅膂莈蒄羂芀学生姓名:袇专业:计算机科学与技术膄班级:羃学号:荿指导教师:芆羄肅螁2012年06月21日蚆目录蚅一、实验题目 1袂二、实验时间、地点 1衿三、实验目的 1荿四、实验要求 1蒅五、实现思路 2羃1、定义结构体 2节2、主要函数: 2蝿六、实现过程 4膆主要代码: 4螁运行结果: 10莀七、实验总结 14芈八、参考文献 14袆螂一、实验题目葿文章编辑:输入一页文字,程序可以统计出字母、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;蚇二、实验时间、地点蚆第十九周,软件楼603袄三、实验目的袁本次课程设计的主要目的是综合运用所学的数据结构知识解决一个比较实际问题,侧重对链表、数组、字符串、图、树等相关内容的综合应用,使同学们能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学****打下良好的基础。肇四、实验要求莇(1)分别统计出其中英文字母数和空格数及整篇文章总字数;蚁(2)统计某一字符串在文章中出现的次数,并输出该次数;罿(3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。蒆输出形式:***(1)分行输出用户输入的各行字符;蚂(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"莂(3)输出删除某一字符串后的文章;腿五、实现思路薃1、定义结构体螄定义结构体structline,文本行采用顺序存储,行与行之间采用链式存储蒀虿2、主要函数:莄intFindString(LINE*&head,char*str)/*统计str在文章中出现的次数*/薁求在一行中Str出现的次数的流程图:薈①.查找第一个字符,如果有第一个字符即p->data[i]==str[0],设计数器k=0肈②.查找这个字符后面的字符与要查找的字符串是否匹配即p->data[i+j]==str[j],如果匹配k++肄③.重复第二步,如果k=len2,则查找到,count++;如果没查找到,重新进行第一步薂羁蒈开始袅count=0;h=0;len1=0;蚄len2=strlen(str);聿p->data[i]==str[0]袇i++薅k=0;j=0;蒁p->data[i+j]==str[j]蒂k++;j++;莆k=len2莅count++;薃i=i+k-1;薀结束肀Y肆N薄Y蚈N葿N袆Y莁voiddelstringword(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芈芇蒄str薁p螇ij肇s芁for(m=0;m<i;m++)蚀tmp[count++]=s[m];***for(n=j;n<len;n++)薄tmp[count++]=s[n];莃tmp螈六、实现过程薆主要代码:芄#include<>莄#include<>膁#include<>艿#include<>羄膁typedefstructline艿{虿 char*data;螅 structline*next;芃}LINE;薁膈voidCreate(LINE*&head)蒅{莄printf("请输入一页文章,以Ctrl+E(^E)为结尾(每行最多输入80字符!):\n");螀LINE*p=newLINE;/*首先为链表建立一个附加表头结点*/薇head=p;/*将p付给表头指针*/芅charch[100];膂while(1)肂{羇gets(ch);/*输入字符串!*/羆 if(strlen(ch)>80)膃 {膀 printf("每行最多输入80字符");蒆 break;螆 }芄 if(ch[0]==5)break;/*如果发现输入^E,则退出输入*/艿p=p->next=newLINE;肀p->data=newchar[strlen(ch)+1];/*为结点分配空间*/蒇strcpy(p->data,ch);肂 if(ch[strlen(ch)-1]==5)/*除去最后一个控制符^E*/蚁 {蕿p->data[strlen(ch)-1]='\0';芇br