2010-08-30 58 views
7

我正在寫一個程序讀取數據流並將其解析爲一些值:整數,浮點數,字符或包含一組值的複合值(可以嵌套) 。我怎麼能用C表示呢?我正在考慮聯合int,float,char,然後有一個指向這些聯合的指針數組作爲複合值,但不能嵌套。代數數據類型相當於C

+1

簡答題 - 不要試試這個在C :) – 2010-08-30 19:27:07

+0

你打算怎麼處理這個數據流? – pmod 2010-08-30 19:30:37

+0

您可以包含一個指向聯合的下一個實例的指針,以存儲值列表。 – Leonid 2010-08-30 19:31:10

回答

4

(我想象你正在解析XML文件)

我們假設你有一大堆的節點。每個節點都可以有一個值,它可以是一組兄弟中的一個,也可以有子節點。這將使你喜歡一個結構:

struct Node 
{ 
     DATA Value; 
     DATATYPE Type; 
     Node* nextSibling; 
     Node* firstChild; 
}; 

DATA也能像你描述的聯合或獨立變量。但是,由於您將以與存儲它們相同的形式從中讀取值,因此工會應該沒問題。 DATATYPE應該是一個枚舉。

1

您的意思是char而不是char[]?所有的char值都可以存儲在int中。對於這個問題,可以肯定的是,所有你想要的int值(以及你機器上所有可能的int值)都可以完全由double表示。

因此,我推薦在節點中使用double有效載荷的樹狀結構。如有必要,請使用enum來區分類型。您可以使用單個子指針和單個鏈接列表「下一個」指針來表示一個n元樹... Wikipedia有一個圖表,但我找不到它:v(。