- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pascal线性结构
一、串的概念 串又称为字符串,是由0个或多个字符组成的有限序列。长度为0的串称为空串,它不包含任何字符。 串用和括起来。二、串的运算 1.串的定义: 一般用一维数组实现串的运算,由此串的定义也用数组的形式来实现: type stringtype=packed array[1..80] of char; var s:stringtype; 另外,还有一种更简便的定义方法,利用turbo pascal中的string类型: var s:string; 但是string类型有一个限制:运用string类型定义的数据长度只能是1——255,也就是说不能超过255个字符。 2.串的标准函数 在turbo pascal中有如下标准函数可实现串的运算: copy(s,x,y):获取从s的第x个位置开始的y个字符 concat(s1,s2,...,sn):相等于s1+s2+...+sn delete(s,x,y):将s中从第x个位置开始的y个字符删去 insert(s1,s,x):将s1插到s中的第x个位置 length(s):获取s的长度 3.串的基本运算 (1)赋值 (2)连接 (3)求串长 (4)取子串 (5)求子串序号 (6)插入 (7)删除 (8)置换三、串的匹配算法 示例:四、练习题: 1.读入一英文句子,单词之间用空格或逗号隔开,统计其中单词个数,并输出各个字母出现的频率。(句子末尾不一定用.结束) (word1) 2.一个句子,只含英文字母,单词间用空格或逗号作为分隔符。统计句子中的单词数,如果含有其他的字符,则只要求输出错误信息及错误类型。(word2) 含有大写字母 错误类型 error 1 数字(0-9) 错误类型 error 2 其他非法字符 错误类型 error 3 如 输入: It is 12! 输出: error 1 2 3 输入: i am ,a student 输出: 4 3.编码解码:从键盘输入一个英文句子,设计一个编码、解码程序。(string) 编码过程:先键入一个正整数N(1=N=26)。这个N决定了转换关系。 例如当N=1,输入的句子为ABCXYZ时,则其转换码为ABCXYZ不变。当N=2时,其转换码为BCDYZA,其它的非字母字符不变。为使编码较于破译,将转换码的信息自左而右两两交换,若最后仅剩单个字符则不换。然后,将一开始表示转换关系的N根据ascii表序号化成大写字母放在最前面。 如:abcABCxyzXYZ-/,1. n=3 ① cdeCDEzabZAB-/,1. {根据N的值转换} ② dcCeEDazZbBA/-1,. {两两交换} ③ CdcCeEDazZbBA/-1,. {最后编码} 解码过程为编码的逆过程。一、一维数组 1.一维数组的存储 由于数组中所有元素属于同一类型,所以每个元素在存储器中占用的空间大小相同。 假设数组的第一个元素存放的位置为LOC(k[1]),每个元素占用的空间大小为S,则k[i]的存放位置为: LOC(k[i])=LOC(k[1])+S*(i-1)组 2.一维数组的操作——元素的插入和删除 由于需要保持运算结果仍然是顺序存储,所以在进行元素的插入和删除时可能要移动一系列元素。例子:Josephus(约瑟夫)问题。 3.例题: (1)猴子选大王——n只猴子选大王,选举办法如下:从头到尾1,2,3报数,凡报3的退出,余下的从尾到头1,2,3报数,凡报3的退出...如此类推,当剩下两只猴子时,取这时报1的为王,若想当猴王,请问当初应占据什么位置? (monky.pas) (2)狐狸捉兔子——围绕着山顶有10个洞,狐狸要吃兔子,兔子说:“可以,但必须找到我,我就藏身于这十个洞中,你从10号洞出发,先到1号洞找,第二次隔1个洞找,第三次隔2个洞找,以后如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?(fox.pas) (3)约瑟夫问题——设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,……,如此重复直到所有的人全部出列为止。对于任意给定的n,s和m,求出按出列次序得到的n个人员的顺序表。
二、多维数组 多维数组是在一维数组的基础上发展起来的,可以看成由多个一维数组组成。储存一个数组中的所有元素,可以用线性序列来表示。以二
文档评论(0)