串和广义表

串(字符串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)

猜你喜欢

转载自www.cnblogs.com/DSYR/p/9134675.html