- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文本编辑器c实验报告附源代码资料
四 川 大 学 软 件 学 院
实 验 报 告
学号:1043111051 姓名:王金科 专业:软件工程 班级:2010级5班
课程名称
数据结构?
实验课时
8
实验项目
文本编辑器
实验时间
12到14周
实验目的
了解c++类的封装 和KMP算法。
实验环境
Windows平台 VC6.0++?
实验内容(算法、程序、步骤和方法)
部分函数创建思想:
创建过程如下:
定义LinkList指针变量*temp: LinkList *temp;
定义文本输入变量ch,记录文本行数变量j,记录每行字符数变量i;
申请动态存储空间:head-next=(LinkList *)malloc(sizeof(LinkList));
首行头指针的前驱指针为空:head-pre=NULL;
首行指针: temp=head-next;
首行指针的前驱指针也为空: temp-pre=NULL;
定义没输入字符时文章长度为0: temp-length=0;
初始化为字符串结束标志,防止出现乱码: for(i=0;i80;i++)
temp-data[i]=\0;
利用循环进行文本输入
for(j=0;jLINK_INIT_SIZE;j++)// 控制一页
{ for(i=0;i80;i++) //控制一行
{ ch=getchar(); //接收输入字符
temp-data[i]=ch; //给temp指向的行赋值
····
temp-length++;//行中字符长度加1
if(ch==#)
{NUM=j; break; //文章结束时,Num来记录整个文章的行数
}}}
在字符输入的过程中,如果在单行输入的字符超过了80个字符,则需要以下操作 :
输入字符数大于80,重新分配空间建立下一行
temp-next=(LinkList *)malloc(sizeof(LinkList)) ;
给temp的前驱指针赋值:temp-next-pre=temp;
temp指向当前行: temp=temp-next;
将下一行初始化为字符串结束标志,防止出现乱码:for(i=0;i80;i++)
temp-data[i]=\0;
记录整个文章的行数:temp-row=NUM+1;
返回指向最后一行指针:return temp;
文本输入部分到此结束。
实验流程图:menu
menu
change
getline
Bmenu
Search
delete_char
add_char
char
display
End
main
程序清单
Header file
#includeiostream
#includestring
using namespace std;
int* get_next(char* T, int* next);//声明get_next函数以获取next数组。
int KMP(char *S, char *T);//声明KMP函数调用next函数来进行查找。
int get_choice();//选择要执行的功能。
void serach(string S);//定义查找函数,用于进行字符串查找。
void add_char(string S);//定义添加函数,用于进行字符串添加。
void change(string S);//定义替换函数,将修改指定位置上的字符为新指定的字符。
void delete_char(string S);//定义删除函数,将用于删除指定位置上的字符。
void display(string S);//显示函数,用于显示当前的字符串。
? C++soure file
#includetextedit.h
using namespace std;
int* get_next(const char* T, int* next){ //根据T字符串将所得到的next数组值存在next指针指向的数组中
int i = 0, j = -1;
int length = strlen(T);
int *temp = next;
*next = -1;
while(i length){
if(j==-1 || *(T+i)==*(T+j)){ //如果字符串中第i个字符与从头起第j个相同,
您可能关注的文档
- 数字信号处理课程设计报告-基于MATLAB的语音信号的特技处理资料.doc
- 数字图像处理实验报告63445298资料.doc
- 摄像基础课件 ppt资料.ppt
- 数字图像水印matlab实现资料.doc
- 数字图像处理论文 基于灰度图像的阈值分割改进方法资料.doc
- 教科版小学二年级下册品德与生活《努力才会有收获》课件 资料.ppt
- 数字信号处理课程设计报告-语音信号的采集与处理资料.doc
- 数字图像灰度阈值的图像分割技术matlab资料.doc
- 数字信号处理课程设计报告-基于MATLAB有噪声语音信号的处理资料.doc
- 数字信号处理实验 基于Matlab资料.doc
- 合肥宏图彩印有限公司行业竞争力评级分析报告(2023版).pdf
- 佛山市欣源电子股份有限公司行业竞争力评级分析报告(2023版).pdf
- 四川省中药饮片有限责任公司行业竞争力评级分析报告(2023版).pdf
- 厦门博创汉津新能源科技有限公司行业竞争力评级分析报告(2023版).pdf
- 佛山市南海新丰复合材料有限公司行业竞争力评级分析报告(2023版).pdf
- 佛山市盈特金属制品有限公司行业竞争力评级分析报告(2023版).pdf
- 健进制药有限公司行业竞争力评级分析报告(2023版).pdf
- 华比亚(河源)婴童用品有限公司行业竞争力评级分析报告(2023版).pdf
- 光大环保能源(三亚)有限公司行业竞争力评级分析报告(2023版).pdf
- 哈尔滨工大航博科技有限公司行业竞争力评级分析报告(2023版).pdf
文档评论(0)