文章编辑。
一、引言。数据结构》课程是计算机相关专业的专业基础课程,属于专业课程体系中的核心课程。该课程着眼于对基本数据结构进行阐述和分析、讲解基本数据结构的应用并介绍典型的基本算法等三个方面,内容比较抽象枯燥,掌握起来相对困难。
数据结构课程设计是一门独立的实验环节,是对数据结构课程教学理论的延伸和补充,是对理论知识的综合应用,其目的是发挥学生的主动性,培养学生分析实际问题并加以解决的能力,锻炼学生的设计创新能力。
此次课程设计题目为文章编辑,基本要求如下:
输入一页文字,可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共n行。
概述 (1)分别统计出其中英文字母和空格数及整篇文章总字数。
(2)统计某一字符串在文章**现的次数,并输出该次数。
(3)删除某一子串,并将后面的字符前移。
关键字: 数据结构课程设计文章编辑英文字母空格数整篇文章。
二、需求分析。
功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共n行;
要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章**现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(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
四、详细设计:
#include<>
#include <>
#include <>文本每行以字符串形式存储,行与行之间以链表存储*/
typedef struct line
char *data
struct line *next;
line创建一链表,同时向里面输入文本数据*/
void create(line * head)
printf ("请输入一页文章,以ctrl+e(^e)为结尾(每行最多输入80字符!):n");
line *p=new line首先为链表建立一个附加表头结点。
head=p将p付给表头指针*/
char tmp[100];
while(1)
if(tmp[0]==5)break如果发现输入 ^e,则退出输入*/
p=p->next=new line;
p->data=new char[strlen(tmp)+1为结点分配空间 */
strcpy(p->data,tmp);
if(tmp[strlen(tmp)-1]==5除去最后一个控制符 ^e */
p->data[strlen(tmp)-1]='0';
break;
p->next=null最后的一个指针为空 */
head=head->next;
*统计字母数*/
int countletter(line * head)
line *p=head;
int count=0;
doint len=strlen(p->data); 计算当前 data 里的数据元素的个数*/
for(int i=0;iif((p->data[i]>=a'&&p->data[i]<=z')|p->data[i]>=a'&&p->data[i]<=z计算字母数*/count
while((p=p->next)!=null遍历链表*/
return count返回文章的字母总数*/
*统计数字数*/
int countnumber(line * head)
line *p=head;
int count=0;
doint len=strlen(p->data); 计算当前 data 里的数据元素的个数*/
for(int i=0;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;
doint len=strlen(p->data); 计算当前 data 里的数据元素的个数*/
for(int i=0;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计算总字符数*/
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
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...