数据结构教程 第十六课 串操作应用举例.docVIP

数据结构教程 第十六课 串操作应用举例.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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);

文档评论(0)

dreamzhangning + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档