`
insertyou
  • 浏览: 900811 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

数据结构-文章编辑

 
阅读更多

//文章编辑
//时间: 2005-7-6
//程序:张建波

#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include "Menu.h"
#include "key.h"
#include <stdlib.h>


typedef struct line{
//char data[80];
char *data; //字符串指针需要时 动态分配内存
struct line *next;
}LINE;

void CreateTXT(LINE * &head); //创建一张列表,同时向里面输入 文本数据
int Count_Space(LINE * &head); //统计空格数
int Count_ZM(LINE * &head); // 统计字母数
int Count_All_Word(LINE * &head); //统计文章的总字数
int Find_Word(LINE * &head,char *sch); //统计 sch 在文章中出现的次数
int Count_Num(LINE * &head); //统计数字 数
void Del_String(LINE * &head,char *sch); //删除指定的字符串
void OutPutTxt(LINE * &head); //向屏幕输出 文章
void Tj(LINE * &head); //统计

int _f5_main(){

LINE *head; //文章的首结点

Menu m[10];
m[1].Name="新建文本链表 ";

m[2].Name="浏览输入文本 ";

m[3].Name="文本统计 ";

m[4].Name="字符串统计";

m[5].Name="字符串删除 ";

m[6].Name="返回 ";



int t=1,ID;
while(t)
{
ShowMenu("数据结构----文章编辑",m,6);//显示菜单

ID=SelectMenuID();
switch(ID)
{
case 1:CreateTXT(head);break;

case 2:{
// system("cls"); //清屏,调用系统shell命令

OutPutTxt(head); //向屏幕输出 文章

InitKey();
break;
}

case 3:{
// system("cls"); //清屏,调用系统shell命令

Tj(head);
InitKey(); //键盘中断

break;
}
case 4:{
// system("cls"); //清屏,调用系统shell命令
cout<<"\n请输入要统计的 字符串\n";
char sch[20];
cin>>sch;
cout<<"\n"<<sch<<"出现的次数为:"<<Find_Word(head,sch);
InitKey();
break;
}
case 5:{
cout<<"\n请输入要删除的某一字符串:"<<endl;
char tmp_sch[20];
cin>>tmp_sch;
Del_String(head,tmp_sch); //删除指定字符
OutPutTxt(head); //向屏幕输出 文章
InitKey();
break;
}
case 6:return 0;
}

}
return 0;
}

void CreateTXT(LINE * &head){
printf("\n请输入文本,每行最多输入80字符!\n");
printf("输入 Ctrl + E (^E) 则结束输入\n");
LINE *p=new LINE; //首先为链表 建立一个附加表头结点
head=p; //将p付给 表头指针
char tmp[80];
while(1)
{
gets(tmp); //输入字符串!使用C的输入函数
// printf("%d",strlen(tmp));
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 Count_Space(LINE * &head){ //统计空格数
LINE *p=head;
int asc_space=32; //空格的ASCIC 码值
int count=0;

do
{
int Len=strlen(p->data); //计算当前 data 里的数据元素的个数
for(int i=0;i<Len;i++)
if(p->data[i]==asc_space)count++; //计算空格数
}
while((p=p->next)!=NULL); //遍历 链表

return count;
}

int Count_Num(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++; //计算空格数
}
while((p=p->next)!=NULL); //遍历 链表

return count;
}

int Count_ZM(LINE * &head){ // 统计字母数
int count=Count_All_Word(head); //总的字符数,包含空格
int space_count=Count_Space(head); //空格数
return count-space_count; //返回文章的字母总数

}


int Count_All_Word(LINE * &head){ //统计文章的总字数
LINE *p=head; //保存链表的首地址
int count=0; //总字母数
do
{count+=strlen(p->data);} //计算当前行内的字符数!除'\0'结束符外!注意,该统计包含“空格的长度!”
while((p=p->next)!=NULL); //遍历 链表

return count;
}


int Find_Word(LINE * &head,char *sch){ //统计 sch 在文章中出现的次数

LINE *p=head;
int count=0;
int h=0;

int len1=0; //保存当前行的总字符数
int len2=strlen(sch); //待统计字符串的长度

int i,j,k;
do
{

len1=strlen(p->data);//当前行的字符数

for(i=0;i<len1;i++)
{
if(p->data[i]==sch[0])
{
k=0;
for(j=0;j<=len2-1;j++)
if(p->data[i+j]==sch[j])k=k+1;
if(k==len2){count++;i=i+k-1;}
}
}
}
while((p=p->next)!=NULL); //遍历 链表
return count;
}

void del_string_word(char *s,char *sch)
{
// *s为输入的字符串
// *sch 为将要删除的字符

char *p=strstr(s,sch); //查询结果
char tmp[80];
int len=strlen(s);
int i=len-strlen(p);
int j=i+strlen(sch);
int count=0;
for(int k=0;k<i;k++)tmp[count++]=s[k];
for(int kk=j;kk<len;kk++)tmp[count++]=s[kk];
tmp[count]='\0';

strcpy(s,tmp); //返回新的字符串
}

void Del_String(LINE * &head,char *sch){ //删除指定的字符串
LINE *p=head;
do
{
if(strstr(p->data,sch)!=NULL)del_string_word(p->data,sch);
} while((p=p->next)!=NULL); //遍历 链表
}


void OutPutTxt(LINE * &head){ //向屏幕输出 文章
LINE *p=head;

do
{ cout<<p->data<<endl;
} while((p=p->next)!=NULL); //遍历 链表
}


void Tj(LINE * &head){ //统计

cout<<"文章统计信息结果如下:\n";
cout<<"\n英文字母数:"<<Count_ZM(head);
cout<<"\n空格数: "<<Count_Space(head);
cout<<"\n文章中共出现数字:"<<Count_Num(head);
cout<<"\n统计文章的总字数: "<<Count_All_Word(head);

}

分享到:
评论

相关推荐

    数据结构-文章编辑.doc

    【数据结构-文章编辑】 本问题涉及数据结构和算法的应用,主要目标是处理文本数据,包括统计字符、数字和空格的数量,查找并统计特定字符串出现的次数,以及删除特定子串并保持文本的完整性。这里我们将分析如何...

    数据结构课程设计-文章编辑系统(内附源码).doc

    完成数据结构——《文章编辑系统》课程学习,实现一个文章编辑系统,可以统计一页文字中文字、数字及空格的个数,以提高对串的应用能力。通过本次教学实习,对所学专业知识进一步消化、理解并掌握,锻炼和提高综合...

    数据结构(c语言)课程设计--文章编辑

     实现静态存储一页文章,每行最多不超过80个字符,共N行;  实现分别统计出其中英文字母数和空格数及整篇文章总字数;  实现统计某一字符串在文章中出现的次数,并输出该次数的功能;  实现删除某一子串,并...

    数据结构课程设计--文章编辑集合运算.docx

    数据结构课程设计报告 -- 文章编辑集合运算 数据结构是一门基础性的计算机科学课程,旨在培养学生对数据的存储、处理和运算的能力。本文档是数据结构课程设计的报告,涵盖了文章编辑集合运算的设计和实现。 需求...

    数据结构课程设计-文章编辑集合运算.docx

    数据结构课程设计-文章编辑集合运算 本文档是关于数据结构课程设计的文章编辑集合运算的设计说明书。该设计的主要目的是实现文章编辑集合运算的功能,以满足计算机科学与技术系的需求。 一、需求分析 在计算机...

    数据结构课程设计报告-文章编辑系统.doc

    数据结构课程设计报告-文章编辑系统.doc

    c 课程设计 数据结构 文章编辑

    在C语言的课程设计中,数据结构与文章编辑是一个典型的实践项目,旨在帮助学生深入理解数据结构的应用,并提升文本处理的能力。在这个项目中,你需要实现一个基础的文章编辑器,具备输入文本、显示文本以及统计字数...

    数据结构 文章编辑(c++)

    本篇论文“数据结构 文章编辑(c++)”深入探讨了如何利用C++进行文章编辑,结合数据结构的知识,提供了一种高效且灵活的方法。 在文章编辑过程中,数据结构的应用主要体现在以下几个方面: 1. **字符串处理**:...

    数据结构课程设计报告-文章编辑

    数据结构课程设计报告的核心是实现一个文章编辑的功能,它基于线性表的存储结构,能够完成一系列文本操作。在这个设计中,主要涉及以下几个知识点: 1. **线性表**:线性表是一种基本的数据结构,它由有限个相同...

    数据结构课程设计-文章编辑系统.doc

    数据结构课程设计的目标是让学生将理论知识应用于实践中,通过设计文章编辑系统,深入理解数据结构、算法设计以及C语言编程技巧。在这个系统中,学生需要实现一个能够接收文章输入、统计文字、数字和空格数量、查找...

    数据结构课程设计-文章编辑系统方案.doc

    数据结构课程设计的目标是让学生将所学的基础知识应用于实际项目,例如在这个案例中设计一个文章编辑系统。这个系统要求使用C语言编程,实现一系列特定功能,包括统计输入文章的文字、数字和空格数量,以及查找和...

    数据结构课程设计文章编辑器

    《数据结构课程设计:构建文章编辑器》 在计算机科学领域,数据结构是核心课程之一,它探讨了如何高效地存储、组织和处理数据。在本次课程设计中,我们将聚焦于构建一个基于MFC(Microsoft Foundation Classes)的...

    数据结构文章编辑的源代码

    数据结构在文章编辑程序中的应用主要体现在如何高效地存储和操作文本信息。在这个特定的程序中,文章的每一行被存储为一个字符串,并通过链表结构连接起来,形成一个线性表,使得整个文章的数据结构呈现出一种动态的...

    数据结构文章编辑 C语言

    在本文中,我们将探讨一个C语言实现的数据结构相关程序,其目标是处理文字输入、统计分析和文本操作。这个程序设计用于读取一页文字,统计其中的字符类型,并执行特定操作,如查找和删除字符串。下面我们将详细讲解...

    数据结构课设:文章编辑

    数据结构课程设计 用C语言写的 设计题目 文章编辑 设计要求 功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和...

    文章编辑数据结构课程设计

    本文主要讨论的是一个基于数据结构的课程设计项目,名为“文章编辑”,其目标是实现一个能够处理英文文章的程序。这个程序采用链式存储来管理文章内容,不涉及文件操作,所有的文本操作都在内存中的链表中完成。 ...

Global site tag (gtag.js) - Google Analytics