通过链表对txt文件编辑.docx
- 文档编号:27794846
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:19
- 大小:185.49KB
通过链表对txt文件编辑.docx
《通过链表对txt文件编辑.docx》由会员分享,可在线阅读,更多相关《通过链表对txt文件编辑.docx(19页珍藏版)》请在冰豆网上搜索。
通过链表对txt文件编辑
数据结构与算法分析课程设计报告
课落款称:
TextEditorImplementation
提交文档学生姓名:
提交文档学生学号:
同组成员名单:
指导教师姓名:
指导教师评阅成绩:
指导教师评阅意见:
.
.
提交报告时刻:
2020年10月9日
一、实验题目:
ATextEditorImplementation
二、实验目的和要求:
1.采纳C++的ASCII码文件和串函数实现;
2.熟练把握串运算的应用;
3.熟练把握运算机系统的大体操作方式,了解如何编辑、编译、链接和运行一个C++程序;
4.上机调试程序,把握查错、排错使程序能正确运行。
三、实验的环境:
1.硬件环境:
Intel(R)Core(R)i5CPUM430@
2Gb内存
2.软件环境:
操作系统:
MicrosoftWindows7
编译系统版本:
MicroSoftVisualStudio
四、算法描述:
主函数流程图:
文件读取失败
文件读取成功
类的层次结构,每一个类的设计,包括数据成员和成员函数组成.
五、源程序清单:
#include
#include
#include
usingnamespacestd;
constintDefaultListSize=1;
template
classLink
{
public:
Elemelement;
Link*next;
Link(constElem&elemval,Link*nextval=NULL)
{
element=elemval;
next=nextval;
}
Link(Link*nextval=NULL)
{
next=nextval;
}
};
template
classLList
{
private:
Link
Link
Link
intleftcnt;
intrightcnt;
voidinit()
{
fence=tail=head=newLink
leftcnt=rightcnt=0;
}
voidremoveall()
{
while(head!
=NULL)
{
fence=head;
head=head->next;
deletefence;
}
}
public:
LList(intsize=DefaultListSize)
{
init();
}
~LList()
{
removeall();
}
voidclear()
{
removeall();
init();
}
intlines()
{
returnrightLength()+leftLength();
}
boolinsert(constElem&item)
{
if(head==NULL)
head=fence=newLink
fence->next=newLink
if(tail==fence)
tail=fence->next;
rightcnt++;
returntrue;
}
boolappend(constElem&item)
{
tail=tail->next=newLink
rightcnt++;
returntrue;
}
boolremove(Elem&it)
{
if(fence->next==NULL)
returnfalse;
it=fence->next->element;
Link
fence->next=ltemp->next;
if(tail==head)
tail=fence;
deleteltemp;
rightcnt--;
returntrue;
}
voidsetStart()
{
fence=head;
rightcnt+=leftcnt;
leftcnt=0;
}
voidsetEnd()
{
fence=tail;
leftcnt+=rightcnt;
rightcnt=0;
}
boolprev()
{
Link
if(fence==head)returnfalse;
while(temp->next!
=fence)
temp=temp->next;
fence=temp;
leftcnt--;
rightcnt++;
returntrue;
}
boolnext()
{
if(fence!
=tail)
{
fence=fence->next;
rightcnt--;
leftcnt++;
returntrue;
}
elsereturnfalse;
}
intleftLength()const{returnleftcnt;}
intrightLength()const{returnrightcnt;}
boolsetPos(intpos)
{
if((pos<0)||(pos>rightcnt+leftcnt))
returnfalse;
fence=head;
for(inti=0;i fence=fence->next; returntrue; } boolgetValue(Elem&it)const { if(rightLength()==0) returnfalse; it=fence->next->element; returntrue; } voidprint()const { Link cout<<"<"; while(temp! =fence) { cout< temp=temp->next; } cout<<"|"; while(temp->next! =NULL) { cout< temp=temp->next; } cout<<">\n"; } }; voidAddMember(LList { stringadd_str; cout<<"请输入要添加的内容: "; getline(cin,add_str); add_str=add_str+"\n"; (add_str); } voidInsertMember(LList { intn; stringm; cout<<"插入第几行后: "; cin>>n; (n-1); getchar(); cout<<"请输入内容: "< getline(cin,m); m=m+"\n"; (m); } voidDelMember(LList { intm=0,c; stringn,del_str; cout<<"按行删除输入1,按内容删除输入2"< cout<<"按行删除或按内容删除: "; cin>>c; getchar(); switch(c) { case1: { cout<<"删除第几行: "; cin>>m; (m-1); (n); cout<<"删除内容为: "< break; } case2: { cout<<"请输入要删除的内容(一次只能删一行): "; getline(cin,del_str); del_str=del_str+"\n"; cout< (); for(inti=0;i<();i++) { (n); if(del_str==n) { (n); cout<<"内容位于第"< m++; break; } (); } if(m==0) cout<<"未找到~>_<~"< break; } default: printf("输错了~>_<~\n");break; } } voidModifyMember(LList { stringmod_str; stringn; intm; cout<<"修改第几行: "; cin>>m; (m-1); (n); cout<<"要修改的内容为: "< "; getchar(); getline(cin,mod_str); mod_str=mod_str+"\n"; (mod_str); } voidSearchMember(LList { stringsea_str,get_str; intn=0; cout<<"请输入要查找的内容片段: "; cin>>sea_str; (); for(inti=0;i<();i++) { (get_str); if((int)(sea_str)>=0) { cout<<"位于第"< n++; } (); } if(n==0) cout<<"未找到~>_<~"< } voidStatistics(LList "; cin>>filename; if(! ReadDataFromFile(p,filename)) { gotoinputfile; }break; case0: break; default: printf("输错了~>_<~\n");break; } } while(m! =0); } intmain() { LList charfilename[20],filename2[20]; DispProgramInfo(); inputfile: cout<<"请输入读入文件名(*.txt): "; cin>>filename; if(! ReadDataFromFile(p,filename)) { gotoinputfile; } cout<<"请输入输出文件名(*.txt): "; cin>>filename2; UserInterFace(p); WriteDataToFile(p,filename2); p.~LList(); return0; } 六、部份功能运行结果: 执行程序: 输入读入文件名与写出文件名: 显示数据: 查询某内容: 修改某内容: 将内容输出至文件:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通过 txt 文件 编辑