廣義表是對線性表和樹的推廣,並且具有共享和遞迴特性的廣義表可以和有向圖(見第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 ...