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

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

ID:18163314

大小:190.50 KB

页数:11页

时间:2018-09-14

数据结构教程 第十六课 串操作应用举例_第1页
数据结构教程 第十六课 串操作应用举例_第2页
数据结构教程 第十六课 串操作应用举例_第3页
数据结构教程 第十六课 串操作应用举例_第4页
数据结构教程 第十六课 串操作应用举例_第5页
资源描述:

《数据结构教程 第十六课 串操作应用举例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、►  数据结构教程 第十六课 串操作应用举例数据结构教程 第十六课 串操作应用举例 教学目的:掌握文本编辑的基本原理及方法教学重点:简单文本编辑教学难点:串的存储管理授课内容:一、复习串的堆分配存储表示堆分配存储表示二、文本编辑基本原理图一文本编辑可以用于源程序的输入和修改(如图一),也可用于报刊和书籍的编辑排版以及办公室的公文书信的起草和润色(如图二)。图二可用于文本编辑的程序很多,功能强弱差别很大,但基本操作是一致的:都包括串的查找,插入和删除等基本操作。对用户来讲,一个文本(文件)可以包括若干页,每页包括若干行

2、,每行包括若干文字。对文本编辑程序来讲,可把整个文本看成一个长字符串,称文本串,页是文本串的子串,行又是页的子串。为简化程序复杂程度,可简单地把文本分成若干行。例:下面的一段源程序可以看成一个文本串,main(){floata,b,max;scanf("%f,%f",&a,&b);if(a>b)max=a;elsemax=b;};这个文本串在内存中的存储映像可为:main(){floata,b,max;scanf("%f,%f",&a,&b);ifa>bmax=a;elsemax=b;}在编辑

3、时,为指示当前编辑位置,程序中要设立页指针、行指针、字符指针,分别指示当前页,当前行,当前字符。因此程序中要设立页表、行表便于查找。三、简单行编辑程序例源程序#include#include#include"keyscode.h"#include"menu.h"structline{intcharnum;char*base;};typedefstructlineSequListElemType;#include"sequlist.h"#defineMAXLINES1000intk

4、ey;intcureditline=0;intcurscrtopline=0;intcureditcol=0;intfunckey;inteditwinx=2;inteditwiny=3;inteditwinlines=20;intmainover=0;FILE*curfile;charfilename[255]="test.txt";SequList*Document;charascii(intk);printdoc(intstartfileline,intstartscrline);readdoc(FILE*fp

5、);editline(intcurline,intmaxcolnum){chars[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

6、)+1);strcpy(Document->elem[curline].base,s);}printdoc(intstartfileline,intstartscrline){inti;intj;cursor_hide();i=startscrline;j=startfileline;setscrcolor(BLUE,YELLOW);gotoxy(editwinx,editwiny+startscrline);while(i<=editwinlines&&ilength){clearscrlin

7、e(editwinx,editwiny+i,78);putsxy(editwinx,editwiny+i++,Document->elem[j++-1].base);}while(i<=editwinlines)clearscrline(editwinx,editwiny+i++,78);cursor_show();}getline(FILE*fp,char*l){inti=0;while(!feof(fp))if((l[i++]=fgetc(fp))=='')break;l[i-1]='';}closedo

8、c(FILE*fp){inti;fclose(fp);for(i=0;ilength;i++)free(Document->elem[i].base);SequListDestroy(Document);}readdoc(FILE*fp){char*newline;chars[20000];intlinenum=0;str

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。