- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构教程 第十六课 串操作应用举例.doc
????数据结构教程?第十六课?串操作应用举例
数据结构教程?第十六课?串操作应用举例
?
教学目的: 掌握文本编辑的基本原理及方法
教学重点: 简单文本编辑
教学难点: 串的存储管理
授课内容:
一、复习串的堆分配存储表示
堆分配存储表示
二、文本编辑基本原理
图一 文本编辑可以用于源程序的输入和修改(如图一),也可用于报刊和书籍的编辑排版以及办公室的公文书信的起草和润色(如图二)。
图二 可用于文本编辑的程序很多,功能强弱差别很大,但基本操作是一致的:都包括串的查找,插入和删除等基本操作。
对用户来讲,一个文本(文件)可以包括若干页,每页包括若干行,每行包括若干文字。
对文本编辑程序来讲,可把整个文本看成一个长字符串,称文本串,页是文本串的子串,行又是页的子串。为简化程序复杂程度,可简单地把文本分成若干行。
例:下面的一段源程序可以看成一个文本串,
main(){
float a,b,max;
scanf(%f,%f,a,b);
if (ab) max=a;
else max=b;
}; 这个文本串在内存中的存储映像可为:
m a i n ( ) { \n f l o a t a , b , m a x ; \n s c a n f ( % f , % f , a , b ) ; \n i f a b m a x = a ; \n e l s e m a x = b ; \n } \n 在编辑时,为指示当前编辑位置,程序中要设立页指针、行指针、字符指针,分别指示当前页,当前行,当前字符。因此程序中要设立页表、行表便于查找。
三、简单行编辑程序例
源程序
#include conio.h
#include string.h
#include keyscode.h
#include menu.h
struct line{
int charnum;
char *base;
};
typedef struct line SequListElemType;
#include sequlist.h
#define MAXLINES 1000
int key;
int cureditline=0;
int curscrtopline=0;
int cureditcol=0;
int funckey;
int editwinx=2;
int editwiny=3;
int editwinlines=20;
int mainover=0;
FILE *curfile;
char filename[255]=test.txt;
SequList *Document;
char ascii(int k);
printdoc(int startfileline,int startscrline);
readdoc(FILE *fp);
editline(int curline,int maxcolnum)
{
char s[2000];
setscrcolor(BLUE,YELLOW);
strcpy(s,Document-elem[curline].base);
getstring(editwinx,editwiny+curline-curscrtopline,s,maxcolnum);
free(Document-elem[curline].base);
Document-elem[curline].base=(char *)malloc(strlen(s)+1);
strcpy(Document-elem[curline].base,s);
}
printdoc(int startfileline,int startscrline)
{
int i;
int j;
cursor_hide();
i=startscrline;
j=startfileline;
setscrcolor(BLUE,YELLOW);
gotoxy(editwinx,editwiny+startscrline);
while(i=editwinlines iDocument-length)
{
clearscrline(editwinx,editwiny+i,78);
putsxy(editwinx,editwiny+i++,Document-elem[j++ -1].base);
}
while(i=editwinlines)
clearscrline(editwinx,editwiny+i++,78);
您可能关注的文档
最近下载
- 某部年度副食品采购 投标方案(技术方案).doc
- 2025云南昆明元朔建设发展有限公司第一批收费员招聘20人备考练习题库及答案解析.docx VIP
- 责任成本管理(案例) 中国铁建.ppt VIP
- 中职智能化生产线安装与运维专业人才培养需求调研报告.pdf VIP
- 名师教学设计《除数是整十数的口算和笔算(商一位数)》完整教学教案.docx VIP
- NBT-31084-2016风力发电场项目建设工程验收规程(B.施工单位用表).docx VIP
- A智慧医院5G互联网医院.pptx
- 高考体育生单招政治历年真题及答案 完整版2025.pdf VIP
- 医院纪检对新员工的培训.pptx
- 2025云南昆明元朔建设发展有限公司第一批收费员招聘20人笔试备考试题及答案解析.docx VIP
文档评论(0)