1.问题描述
功能:从间盘输入一页文字,静态存储在一个文件中。
要求:
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)同一字符串在文章中出现的次数,并输出次数;
(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个函数实现相应的功能;
输入数据的形式和范围:可以输入大写、小写的英文字母,任意数字和标点符号。
输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出“全部字母数”、“数字个数”、“空格个数”、“文章总字数”;
(3)输出删除某一字符串后的文章;
2.数据组织
该程序采用单链表作为表的存储结构,每行作为一个数据节点,也称为行节点。另外,每行中的元素个数也是不确定的,但由于需要提供随机查找行中的数据元素,所以每行中的数据元素采用顺序表存储结构,这里用长度为MAXSIZE的数组ch存储每行的数据。因此该单链表中数据节点的类型声明如下:
#define MAXSIZE 100 //最大列数
typedef char DataType;
typedef struct node //定义数据节点类型
{
DataType ch[MAXSIZE]; //存放一行的数据
struct node *next; //指向后继数据节点
}Lstring; //行节点类型
3.设计运算算法
通过对问题分析,需要设计9个基本运算算法。
a. Lstring *input() :输入文章
b. Lstring *OutPut(Lstring *head): 输出文章
c. int Alphabet(Lstring *head):统计字母的个数
d. int Num(Lstring *head): 统计数字的个数
e.int Space(Lstring *head): 统计空格的个数
f.int All(Lstring *head): 统计文章的总字数
g.int FindString(Lstring *head,char *str): 字符串的简单模式匹配
h.void delstringword(char *s, char *str) : 删除字符串
i.Lstring *DelString(Lstring head,charstr):查找文章中是否含有要删除的字符串
4.设计求解程序
在设计好9个基本运算算法以后,设计以下主函数调用这些算法完成求解任务:
5.运行结果
运行本程序,输入相应表数据,得到对应的结果:
注:运行环境VC++6.0