廣義表運算

2021-08-25 02:42:01 字數 459 閱讀 1296

廣義表是對線性表和樹的推廣,並且具有共享和遞迴特性的廣義表可以和有向圖(見第7章)建立對應,因此廣義表的大部分運算與這些資料結構上的運算類似。

在此,只討論廣義表的兩個特殊的基本運算:取表頭head(ls)和取表尾tail(ls)。

根據表頭、表尾的定義可知:任何乙個非空廣義表的表頭是表中第乙個元素,它可以是原子,也可以是子表,而其表尾必定是子表。

【例】head(l)=a, tail(l)=(b)

head(b)=a, tail(b)=(y)

由於tail(l)是非空表,可繼續分解得到:

head(tail(l))=b, tail(tail(l))=()

對非空表a和(y),也可繼續分解。

注意:廣義表()和(())不同。前者是長度為0的空表,對其不能做求表頭和表尾的運算;而後者是長度為l的非空表(只不過該表中惟一的乙個元素是空表),對其可進行分解,得到的表頭和表尾均是空表()。

廣義表的各種運算

題目要求 編寫乙個程式exp6 5.cpp,實現廣義表的各種運算,並在此基礎上設計乙個主程式完成如下功能 1.建立廣義表g b,b,a,d a,b c,的鏈式儲存結構 2.輸出廣義表g的長度 3.輸出廣義表g的深度 4.輸出廣義表g的最大原子。輸入 include include includeus...

廣義表的head 和tail運算

1 利用廣義表的head和tail操作寫出函式表示式,把以下各題中的單元素banana從廣義表中分離出來 答案 1 head tail tail l1 2 head head tail l2 3 head head tail tail head l3 4 head head tail tail l4...

廣義表操作 建立廣義表,判斷廣義表是否相等

建立廣義表 演算法思路 從字串行中分離出左部,右部,依次為左部和右部建立儲存 char s 61 設字串行長度不超過60 eg a,b c d,e,f g a i b int sever int a,int b i while k 0 s i i b return i eg a,b c d,e,f ...