資料結構 串和廣義表

2021-08-20 11:42:32 字數 969 閱讀 8865

串中字元的數目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)

表長1d=(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)

資料結構 廣義表

廣義表 lists,又稱列表 是一種非線性的 資料結構 是線性表 的一種推廣。即廣義表中放鬆對錶元素的原子限制,容許它們具有其自身結構。思想 廣義表就類似下圖的結構,他的大體 下圖第一行 相當於乙個帶頭結點的鍊錶,思想,首先要有乙個頭結點為head型別,每乙個廣義表有且只有乙個head,而後每個節點...

資料結構 廣義表

概念 陣列和廣義表可以看成是線性表在下述含義上的擴充套件,表中資料元素本身也是乙個資料結構。廣義表也可以看作是線性表的推廣。1 廣義表的元素可以是子表,而子表的元素還可以包含子表。2 列表可以被其他列表所共享。3 列表可以是乙個遞迴的表,也就是說列表也可以是自身的子表。由於廣義表裡面的資料元素可以具...

資料結構 廣義表

一 問題概述 廣義表是非線性的資料結構,是由若干個元素組合而成的,廣義表中可以有子表,類似這樣的 我們以c a,b,c,d 為例,將它定義為這樣的資料結構 我們會給定字串的形式,如 char str a,b,c,d 然後將它轉化為如上的資料結構。二 解決辦法 1 將符號 看作是頭節點,然後將是數值的...