廣義表(C語言,傻瓜式實現)

2021-07-29 07:14:05 字數 1307 閱讀 1945

廣義表廣泛應用於人工智慧中,不可不謂很重要!

在學習的過程中,書裡沒有給出確切的實現方法。而在網上大多數是用c++物件導向來寫的。程式冗長。而用c語音寫出來的大多有點複雜。所以我結合了一下,寫了乙個比較容易實現的廣義表。

廣義表的節點分為兩類:一類是原子(atom),另一類是子表(list)。在寫節點時候我們需要給節點做標記,以便對節點型別做出判斷,然後執行相應的操作。

下面是廣義表的乙個簡單示意圖,希望可以幫助大家理解。

C 如何實現廣義表詳解

以下給出幾種簡單的廣義表模型 由上圖我們可以看到,廣義表的節點型別無非head value sub三種,這裡設定列舉型別,利用列舉變數來記錄每個節點的型別 enum type 每個節點都有自己的型別以及next指標,除此之外,如果該節點是value型別還要分配空間儲存該節點的有效值 但是若該節點是s...

資料結構(C語言) 廣義表

二 廣義表的儲存 廣義表是線性表的推廣,也稱為列表 lists 線性表中的元素僅限於單個資料元素 原子 即不可以再分割 而廣義表中的元素即可以是原子,也可以是子表。廣義表是n n 0 個資料元素a1,a2,a3 an的有序序列,一般記做 ls a1,a2,a3 an 其中ls是廣義表的名稱,n是廣義...

廣義表的深度和長度(C語言)詳解

廣義表的長度,指的是廣義表中所包含的資料元素的個數。由於廣義表中可以同時儲存原子和子表兩種型別的資料,因此在計算廣義表的長度時規定,廣義表中儲存的每個原子算作乙個資料,同樣每個子表也只算作是乙個資料。例如,在廣義表 中,它包含乙個原子和乙個子表,因此該廣義表的長度為 2。再比如,廣義表 中只有乙個子...