1、2.1结构与算法分析为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。在编辑器的主界面中应有如下提示信息:2.11清空以前的文本信将用数组存的数据内容全部置为0,显示当前文本信息:遍历顺序表中存入的信息,并输出到显示器上。2.12 编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和两个整型变量,整型变量用于记录一维数组中存入数据的的行数与列数。typedef struct char srMAXS
2、IZE; int hang; int lie;shuru ;2.13替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息。2.14插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置。2.15移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息。2.16删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除
3、信息,如果未找到要删除的信息,提示未找到该信息。2.2流程图 图21文本编辑器流程第三章详细设计#include stdafx.h#includestdio.hmalloc.hstring.hiostream.hstdlib.hconio.h#include #define Link_Size 100int NUM,C,N;typedef struct list/1、 定义链表结点 char data50; /记录一行字符 int length; /记录一行字符长度 struct list *next; struct list *prior; int row; LinkList;LinkLis
4、t *head;/LinkList *CreatWord()/编辑文本内容 LinkList *temp; char ch; int i,j; head-next=(LinkList *)malloc(sizeof(LinkList);prior=NULL; temp=head-next; temp-length=0; for(i=0;i50;i+)datai=0; printf(开始创建文本,请输入文章(输入#号结束):n); for(j=0;jprior=temp; temp=temp-row=NUM+1; system(cls return temp;void PrintWord()/显
5、示当前文章内容 /定义文本行数变量j,每行字符数i LinkList *p; p=head-n当前文章的内容是:=NUM&p!=NULL;j+) for(i=0;(idatai)!= printf(%c,p-datai); p=p-/void SearchWord(char *str1,LinkList* temp) /查找文章中的字符或者字符串 char Data20 ; /记录需要查找的字符内容 int i,j,k=0,sum=0; int l=1; strcpy(Data,str1);=NUM;i+) j+) if(temp-dataj)=Datak) k+;/将输入的查找字符与链表中信
6、息比较,找到第一个相同的字符 else if(Datak! j=j-k; k=0; if(Datak=) sum+; j=j-k+1; /从主串第j-k个位置重新查找tt第%d次出现在第%d行第%d列n,l,i+1,j+1); l+; k=0; continue; ttt字符串总共出现次数为:%dnn,sum); C=sum; N=i*50+j; /void DeleteWord(char *str2) /从主串第j-k个位置重新查找 char Data20; /存储需要删除的字符或者字符串 LinkList *temp,*term; int i,j,k,m,y,num; strcpy(Dat
7、a,str2); for(y=0;y for(j=0; if(temp- else if(Datak!) j=j-k;k=0; if(Datak= num=j; break; if(num50) break; for(; for(; if(j+1data50-k+num=temp-dataj+1; /删除的字符串不在最后一行,将下一行的字符(由temp指向)前移到前行 else temp-dataj-k+1=temp- j=0;/LinkList * InsertWord(LinkList *temp) / 向文章中插入字符或者字符串 int h,l;ntt请输入要插入的字符或字符串: getchar(); gets(Data);ntt当前文章内容为: PrintWord();ntt请输入要插入的行: scanf(%d,&h);ntt请输入要插入的列:l); int i=(h-1)*50+l; LinkList *a; int n=strlen(Data); int m ; int insertRow=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1