我並不確切地知道你想要什麼用列表做的,但這裏有一個想法:創建一棵樹在那裏兄弟姐妹行爲像喜歡列表中的定期next
項目,其中兒童提供類似的附加信息複合類型或函數參數的條目。
所以結構會是這個樣子:
struct Entity {
const char *id;
enum Type type;
char is_const;
char is_var;
/* ... whatever ... */
struct Entity *next;
struct Entity *child;
};
所以,如果你有
var x: integer;
procedure proc(var res: integer, x, y: integer); forward;
type date = record
dd, mm, yy: integer;;
end;
你的樹應該是這樣的:
[var x: integer]
|
[proc: procedure] -> [var res: integer]
| |
| [x: integer]
| |
| [y: integer]
|
[type date: record] -> [dd: integer]
|
[mm: integer]
|
[yy: integer]
這裏,箭頭->
表示兒童和豎槓|
兄弟姐妹或只是下一個項目在t他列出。
在左側的元件形成主列表中,包括第一個級別(全局範圍)符號。下一級意味着父元素的範圍。例如dd
只在記錄date
內部是已知的。這基本上是一個多級鏈接列表,可以輕鬆擴展任意數量的函數參數或記錄條目。