欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构文本编辑.docx

    • 资源ID:2101948       资源大小:18.21KB        全文页数:17页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构文本编辑.docx

    1、数据结构文本编辑 深 圳 大 学 实 验 报 告 课 程 名 称: 数据结构与算法 实 验 名 称: 文本处理 学 院: 电子学院 专 业: 光信息科学与技术 指 导 教 师: 吴庆阳 报告人: 朱腾飞 学号: 2009160166 班级: 光信2 班 实 验 时 间: 2010 -5 -20 实验报告提交时间: 实验要求:支持文本的插入、删除、修改; 支持字符串的查询、修改; 支持文本行的删除、替换; 支持大文本的处理; 支持文本的打印;程序介绍:本程序分为两部分:1.字符串的处理,主要包括:字符串中字符的替换、字符串中子串的查询、删除、插入、替换等。2.大文本编辑,此部分程序自带一大文本进

    2、行处理,对该部分的处理采用的是链表和二维数组结合以及相关的字符串处理知识,所有的大文本采取链表形式存储,以行为单位,每一行为一节点,然后对大文本的处理,比如,行的删除,行的插入,这些都与链表中结点的删除插入相似。此部分包含的功能主要有:大文本的打印、文本行的删除,行的插入,两行交换等。大文本插入,每行超过80字符时,要在字符串处理部分实现.实验结论:在上个作业中,对链表有了更深理解,在这一作业中又进一步熟练了二维数组的操作,尤其是在对二维数组行引用,二维数组的初始化方式等方面。提高啦编程能力#include#include#includetypedef struct node char ch;

    3、 struct node *next;lstring; struct list int num; char wenben80; struct list *Next; ; typedef struct list Node; typedef Node *llink;char fei780=americansbelievenoonetaandsstillif,ouarefallingbehindtimeisoneofthetwoelementsthatamericanssav,ecarefulllyssometingalmostrealwebudgetitsaveitcutitkillitaccor

    4、it,afirstforeignerfirstexpressiongoftheusislik,enunderpressurecitypeopletestllyseekingattentioninastoeor,todayiaccomplishmytasksuccessfullyandtheteacher, idontknowhowtodothejobsoiturnto; /求串长的函数int length(lstring *s)int i=0;lstring*p=s-next;while(p!=NULL)i+;p=p-next;return i;/输出串的函数dispstr(lstring *

    5、s)lstring *p=s-next;if(p=NULL)printf(空串n);elsewhile(p!=NULL)printf(%c,p-ch);p=p-next;printf(n);/插入字串,在串s的第pos个字符之前插入串tlstring *insert(lstring *s,int pos,lstring *t)int k;lstring *p,*q;p=s;k=1;while(knext;k+;if(p=NULL)printf(无效posn);elseq=t;while(q-next!=NULL)q=q-next;q-next=p-next;p-next=t; return s

    6、;/删除子串,从串s中删除第pos个字符起长度为len的子串lstring *strdelete(lstring *s,int pos,int len)int j=1,k;lstring *p,*q,*r,*b;p=s;q=p;k=1;while(p!=NULL&knext;k+;if(p=NULL)printf(pos无效n);else k=1;while(knext;k+;if(p=NULL)printf(pos无效n);else r=q-next; while(jnext; free(b); j+; q-next=r; return s;/字符串的查询函数,查询串s中第pos个字符开始的

    7、,连续len个字符组成的字串lstring *substr(lstring *s,int pos,int len)int k;lstring *str,*p=s-next,*q,*r;str=(lstring*)malloc(sizeof(lstring);str-next=NULL;r=str;if(poslength(s)|lenlength(s)return str;for(k=0;knext;for(k=1;kch=p-ch;q-next=NULL;r-next=q;r=q;p=p-next;return str;/字符的替换函数,将串s中的某个字符c全部替换为另一个字符slstrin

    8、g *trans(lstring *str,char c,char s)lstring *p;p=str-next;while(p!=NULL)if(p-ch=c)p-ch=s;p=p-next;return str;/字符串初始化函数 lstring *chushi(lstring *s,char cstr)int i;lstring *r,*p;s=(lstring *)malloc(sizeof(lstring);s-next=NULL;r=s;for(i=0;cstri!=0;i+)p=(lstring *)malloc(sizeof(lstring);p-ch=cstri;p-nex

    9、t=NULL;r-next=p;r=p;return s;/释放内存函数freelist(lstring * dsp)lstring * ptr, *prl;prl=dsp;ptr=NULL;prl=prl-next;while(ptr!=NULL)ptr=prl;prl=prl-next;free(ptr);function()printf(功能选择n); printf(1.字符串中字串的删除n); printf(2.字符串中字串的查询n); printf(5.释放内存,退出程序运行n); printf(3.字符串的插入n); printf(4.字符的替换n); printf(6.求目前串的

    10、长度n); printf(7.打印出大文本n); printf(8.大文本正行的删除n); printf(9.大文本整行的插入n); printf(10.整行查找n); printf(11.两行的互换n); /打印出大文本函数dayin(llink pm)/ int j;llink opp;opp=pm;while(opp!=NULL) printf(%s,opp-wenben); printf(n);opp=opp-Next;/整行插入函数add(llink pn) llink pss=pn; llink pst=pn; llink psv; char oo80;int m,n; print

    11、f(插入行位置,两行之间n);scanf(%d,%d,&m,&n);getchar();while(pss-num!=m)pss=pss-Next;while(pst-num!=n)pst=pst-Next;psv=(llink)malloc(sizeof(Node);printf(请为要插入的行初始化n);gets(oo);strcpy(psv-wenben,oo);if(mn)pst-Next=psv;psv-Next=pss;psv-num=n+1;for(;pss!=NULL;pss=pss-Next)pss-num+;elsepss-Next=psv;psv-Next=pst;psv

    12、-num=m+1;for(;pst!=NULL;pst=pst-Next)pst-num+;dayin(pn);/整行查找zhengcha(llink pj)int j;printf(请输入要查找的行数n);scanf(%d,&j);getchar();while(pj-num!=j)pj=pj-Next;printf(该行为n);puts(pj-wenben);/两行互换huhuan(llink km)int m,n;llink pss=km;llink pst=km;char ma80;printf(请输入要互换的两行n);scanf(%d,%d,&m,&n);getchar();prin

    13、tf(互换后的文本为n);while(pss-num!=m)pss=pss-Next;while(pst-num!=n)pst=pst-Next;strcpy(ma,pss-wenben);strcpy(pss-wenben,pst-wenben);strcpy(pst-wenben,ma);dayin(km);/主程序main()lstring *s=NULL,*p,*head,*t,*bv=NULL,*cha,*op,*ti;llink Head=NULL,ptr; llink vary=Head; llink fir,las; llink pss=Head;int hang=7; int

    14、 i,k; llink pst=Head;int king,labb,pos,len,c,d,charu,chang;char str1000,bvl1000,oo80; char a,b; ptr=(llink)malloc(sizeof(Node);Head=ptr;strcpy(ptr-wenben,fei0);ptr-num=1;for(i=1;iNext=(llink)malloc(sizeof(Node);strcpy(ptr-Next-wenben,feii);ptr-Next-num=i+1;ptr=ptr-Next;ptr-Next=NULL;/为最后一个指针付一个方向,不然

    15、会输出错误/到此大文本初始化结束,Head指向该链表头printf(请初始化字符串n);gets(str); p=chushi(s,str); function();for(;)scanf(%d,&king); getchar(); switch(king) case 1: printf(请分别输入从第几个字符开始删除,删除的个数n); printf(两个数字间以逗号隔开n); scanf(%d,%d,&pos,&len); head=strdelete(p,pos,len); printf(经删除后的新串为:n); dispstr(head); printf(n); printf(还可进行其

    16、它功能选择n); function();break; case 2: printf(请输入要查询的信息,包括查询的开始位置,查询的字符个数n); scanf(%d,%d,&c,&d); head=substr(p,c,d); dispstr(head); function();break; case 3: printf(在第pos个字符前插入串tn);printf(请输入字符串tn); gets(bvl); t=chushi(bv,bvl); op=t-next;printf(请输入插入位置n);scanf(%d,&charu); cha=insert(p,charu,op);printf(插

    17、入后的串为:n); dispstr(cha);function();break; case 5: freelist(p); exit(1); case 4: printf(请分别输入替换字符和被替换字符,以逗号隔开n);scanf(%c,%c,&a,&b); ti=trans(p,b,a);printf(替换后的字符串为:n); dispstr(ti);break; case 6: chang=length(p);printf(此时串长为:%dn,chang);function();break; case 7: dayin(Head); function();break; case 8: pr

    18、intf(请输入要删除的行数n); scanf(%d,&k); getchar(); if(k=1) ptr=Head; Head=Head-Next; for(;ptr!=NULL;ptr=ptr-Next)ptr-num-; hang-; if(hang=0)printf(文本已全部被删除n);elseprintf(删除后的文本为n); dayin(Head); else if(k=hang) ptr=Head; while(ptr-Next-num!=hang) ptr=ptr-Next; ptr-Next=NULL; hang-; printf(删除后的文本为n); dayin(Hea

    19、d); else ptr=Head; while(ptr-Next-num!=k) ptr=ptr-Next; ptr-Next=ptr-Next-Next; for(;ptr-Next!=NULL;ptr=ptr-Next) ptr-Next-num-;hang-; dayin(Head); function(); break; case 9: printf(如果插在第一行请按1,插在最后一行请按2,中间按3n);scanf(%d,&labb); getchar();switch(labb)case 1: printf(请为要插入的字符串初始化n);fir=(llink)malloc(siz

    20、eof(Node); gets(oo); strcpy(fir-wenben,oo); fir-num=1;for(i=0;vary!=NULL;i+,vary=vary-Next)vary-num+; fir-Next=Head;Head=fir; pss=Head;pst=Head; vary=Head; hang+; dayin(Head); break;case 2: printf(请为要插入的字符串初始化n);las=(llink)malloc(sizeof(Node); gets(oo);strcpy(las-wenben,oo);for(i=0;pss-Next!=NULL;i+,pss=pss-Next);pss-Next=las;las-Next=NULL;las-num=pss-num+1;hang+; dayin(Head); break;case 3: add(Head); hang+;break;function();break; case 10: zhengcha(Head); function();break; case 11: huhuan(Head); function();break;


    注意事项

    本文(数据结构文本编辑.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开