数据结构课程设计报告

发布 2022-10-05 03:14:28 阅读 7032

文章编辑。

一、引言。数据结构》课程是计算机相关专业的专业基础课程,属于专业课程体系中的核心课程。该课程着眼于对基本数据结构进行阐述和分析、讲解基本数据结构的应用并介绍典型的基本算法等三个方面,内容比较抽象枯燥,掌握起来相对困难。

数据结构课程设计是一门独立的实验环节,是对数据结构课程教学理论的延伸和补充,是对理论知识的综合应用,其目的是发挥学生的主动性,培养学生分析实际问题并加以解决的能力,锻炼学生的设计创新能力。

此次课程设计题目为文章编辑,基本要求如下:

输入一页文字,可以统计出文字、数字、空格的个数。

静态存储一页文章,每行最多不超过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 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...