欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    数据结构C语言第四章 串.docx

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

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

    数据结构C语言第四章 串.docx

    数据结构C语言第四章 串第四章 串 重点难点 理解"串"类型定义中各基本操作的特点,并能正确利用它们进行串的其它操作;掌握串类型的各种存储表示方法; 理解串的两种匹配算法。 典型例题 1、简述下列每对术语的区别: 空串和空白串;串常量和串变量;主串和子串;静态分配的顺序串和动态分配的顺序串; 空串是指不包含任何字符的串,它的长度为零。 空白串是指包含一个或多个空格的串,空格也是字符。 串常量是指在程序中只可引用但不可改变其值的串。 串变量是可以在运行中改变其值的。 主串和子串是相对的,一个串中任意个连续字符组成的串就是这个串的子串,而包含子串的串就称为主串。 静态分配的顺序串是指串的存储空间是确定的,即串值空间的大小是静态的,在编译时刻就被确定。 动态分配的顺序串是在编译时不分配串值空间,在运行过程中用malloc和free等函数根据需要动态地分配和释放字符数组的空间(这个空间长度由分配时确定,也是顺序存储空间)。 2、以HString为存储表示,写一个求子串的算法。 HString 是指以动态分配顺序串为存储表示,其定义为: typedef struct char *ch; int length; HString; void *substr( HString *sub,HString *s,int pos,int len) /用sub返回串s的第pos个字符起长度为len的子串。sub初始时为一空串 /pos的合法位置为0<=pos<=s->length-1 int i; if (pos<0|pos>s->length-1|len<=0) Error("parameter error!");/参数不合法,子串为空串 if (s->length<pos+len)/s串中没有足够的元素 sub->len=s->length-pos;/设置子串的串长 else sub->length=len; /设置子串的串长 sub->ch=(char *)malloc(len*sizeof(char);/为sub->ch申请结点空间 for(i=0;i<sub->length;i+)/将s串中pos位置开始的共sub->length个字符复制到sub串中 sub->chi=s->chpos+i; 3、若S和T是用结点大小为1的单链表存储的两个串,试设计一个算法找出S中第一个不在T中出现的字符。 查找过程是这样的,取S中的一个字符(结点),然后和T中所有的字符一一比较,直到比完仍没有相同的字符时,查找过程结束,否则再取S中下一个字符,重新进行上述过程。算法如下: 链串的结构类型定义: typedef struct node char data; struct node *next; LinkStrNode; /结点类型 typedef LinkStrNode *LinkString; /LinkString为链串类型 LinkString S; /S是链串的头指针 char SearchNoin( LinkString S, LinkString T) /查找不在T中出现的字符 LinkStrNode *p,*q; p=S; q=T; while (p) /取S中结点字符 while(q&&p->data!=q->data)/进行字符比较 q=q->next; if(q=NULL) return p->data;/找到并返回字符值 q=T; /指针恢复串T的开始结点 p=p->next; printf("there's no such character."); return NULL; 习题精选 一、.单项选择题 1.串是一种特殊的线性表,其特殊性体现在。 A可以顺序存储 B数据元素是一个字符 C可以链式存储 D数据元素可以是多个字符若 2串下面关于串的的叙述中,是不正确的? A串是字符的有限序列 B空串是由空格构成的串 C模式匹配是串的一种重要运算 D串既可以采用顺序存储,也可以采用链式存 3. 串的长度是指。 A串中所含不同字母的个数 B串中所含字符的个数 C串中所含不同字符的个数 D串中所含非空格字符的个数 4. 设串s1=ABCDEFG,s2=PQRST,函数con(x,y)返回x和y串的连接串,subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2), subs(s1, len(s2), 2)的结果串是: BCDEF BCDEFG BCPQRST BCDEFEF 二、算法设计 1. 编写算法,实现下面函数的功能。函数void insert(char*s,char*t,int pos)将字符串t插入到字符串s中,插入位置为pos。假设分配给字符串s的空间足够让字符串t插入。 题目分析本题是字符串的插入问题,要求在字符串s的pos位置,插入字符串t。首先应查找字符串s的pos位置,将第pos个字符到字符串s尾的子串向后移动字符串t的长度,然后将字符串t复制到字符串s的第pos位置后。 对插入位置pos要验证其合法性,小于1或大于串s的长度均为非法,因题目假设给字符串s的空间足够大,故对插入不必判溢出。 void insert(char *s,char *t,int pos) /将字符串t插入字符串s的第pos个位置。 int i=1,x=0; char *p=s,*q=t; /p,q分别为字符串s和t的工作指针 if(pos<1) printf(“pos参数位置非法n”);exit(0); while(*p!=0&&i<pos) p+;i+; /查pos位置 /若pos小于串s长度,则查到pos位置时,i=pos。 if(*p = '/0') printf("%d位置大于字符串s的长度",pos);exit(0); else /查找字符串的尾 while(*p!= '/0') p+; i+; /查到尾时,i为字符0的下标,p也指向0。 while(*q!= '0') q+; x+; /查找字符串t的长度x,循环结束时q指向'0'。 for(j=i;j>=pos ;j-)*(p+x)=*p; p-;/串s的pos后的子串右移,空出串t的位置。 q-; /指针q回退到串t的最后一个字符 for(j=1;j<=x;j+) *p-=*q-; /将t串插入到s的pos位置上 算法讨论 串s的结束标记('0')也后移了,而串t的结尾标记不应插入到s中。 2. 写一个递归算法来实现字符串逆序存储,要求不另设串存储空间。 题目分析实现字符串的逆置并不难,但本题“要求不另设串存储空间”来实现字符串逆序存储,即第一个输入的字符最后存储,最后输入的字符先存储,使用递归可容易做到。 void InvertStore(char A) /字符串逆序存储的递归算法。 char ch; static int i = 0;/需要使用静态变量 scanf ("%c",&ch); if (ch!= '.') /规定'.'是字符串输入结束标志 InvertStore(A); Ai+ = ch;/字符串逆序存储 Ai = '0' /字符串结尾标记 /结束算法InvertStore。 3. 写一个算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件。 void Count /统计输入字符串中数字字符和字母字符的个数。 int i,num36; char ch; fornumi;/ 初始化 while!=#) /#表示输入字符串结束。 ifi=ch48;numi+; / 数字字符 else ifi=ch-65+10;numi+;/ 字母字符 for / 输出数字字符的个数 printf; for/ 求出字母字符的个数 printf; / 算法结束。

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开