廣 義 表
廣義表一般記作:
? LS=(a1,a2,.....an),其中LS是廣義表(a1,a2,.....an)的名稱,n是其長度,在廣義表的定義中,ai可以是單個元素,也可以是廣義表,分別稱為廣義表LS的原子和字表,習慣上,用大寫字母表示廣義表的名稱,用小寫字母表示原子(廣義表中的資料元素通常采用鏈式存盤結構),
1.下面列舉一些廣義表的例子:
(1) A=( ) A是一個空表,其長度為零,
(2) B=(e) B只有一個原子e,其長度為1.
(3) C=(a,(b,c,d)) C的長度為2,兩個元素分別為原子a和子表(b,c,d),
(4) D=(A,B,C) D的長度為3,3個元素都是廣義表,顯然,將子表的值代入后,則有D=(( ).(e),(a,(b,c,d)))
(5) E=(a,E) 這是一個遞回的表,其長度為2,,E相當于一個無限的廣義表 E=(a,(a(a,.......))),
(6) L=(a,(b,c,d)) L的表頭是a, 表尾是 ((b.c.d)),
2.廣義表中最重要的兩個運算如下,
(1)GetHead(LS)(取表頭):取出的表頭為非空廣義表的第一個元素,他可以是一個單原子,也可以是一個子表,
(2)GetTail(LS)(取表尾): 取出的表尾為除去表頭之外,由其余元素構成的表,即表尾一定是一個廣義表,
復雜點的例子
廣義表A=(a,b,(c,d),(e,(f,g))),則下面式子的值為( ). Head(Tail(Head(Tail(Tail(A)))))
第一步: Tail(A):(b,(c,d),(e,(f,g)))
第二步:Tail(Tail(A)) : ((c,d),(e,(f,g)))
第三步: Head(……) : (c,d)
第四步: Tail(……) : (d)
第五步: Head(……) : d
收藏 關注 評論轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/519160.html
標籤:其他
