串和广义表
串(字符串string):
串中字符的数目n称为串的长度。0个字符的串称为空串,长度为0. 包含串中任意个连续字符的串称为子串,包含子串的串称为主串。
如a="IBM",c="BM" 则a的长度为3,且c为a的子串 b="", 则b的长度为0
在串的基本操作时候,通常是以“串的整体”作为操作对象。
广义表:
也成为列表,是线性表的一种扩展,也是数据元素的有限序列。
记为:LS = (d0,d1,d2,d3……dn-1),其中di既可以是单个元素也可以是广义表。n 为表长。
说明:
广义表的定义为递归定义,在描述广义表时又出现广义表;
广义表的数据元素成为原子(单个元素)或子表(广义表)。
举例:
A=() | 空表,表长为0 |
B=(a,(b,c,d)) | 表长为2,即a和子表(b,c,d) |
C=(e) | 表长1 |
D=(A,B,C,f) | 表长为4,前三个元素A,B,C为广义表,第四个元素为单元素 |
E=(a,E) | 递归表,长度为2.E相当于一个无限的广义表,E=(a,(a,(a,……))) |
若广义表不空,则可分为表头和表尾,反之,一对表头和表尾可唯一确定广义表。
对非空广义表:称第一个元素为表头,剩下的为表尾。
如:
B=(a,(b,c,d)) |
表头为a,表尾为((b,c,d)); (PS:表尾为拿掉表头和逗号后剩下的原封不动的写下来,所以有两个括号) 即Head(B)=a; Tail(B)=((b,c,d)) |
C=(e) | Head(C)=e; Tail(C)=() |
D=(A,B,C,f) | Head(D)=A; Tail(D)=(B,C,f) |
此外,运算还可以嵌套:Head(Tail(B))=b; Tail(Tail(B))=(c,d)