2.6 我似乎不能成功定義一個鏈表。我試過  typedef struct { char *item; NODEPTR next; } *NODEPTR; 但是編譯器報了錯誤信息。難道在C語言中一個 結構不能包含指向自己的指針嗎?

C 語言中的結構當然可以包含指向自己的指針; [K&R2, 第 6.5 節] 的討論 和例子表明了這點。 NODEPTR 例子的問題是在聲明 next 域的時候  typedef 還沒有定義。為了解決這個問題, 首先賦予這個結構一個標籤  (``struct node'')。然後, 聲明 ``next'' 域為  ``struct node *'', 或者分開 typedef 定義和結構定義, 或者兩者都採納。 以下是一個修改後的版本:
	struct node {
	    char *item;
	    struct node *next;
	};

	typedef struct node *NODEPTR;
至少還有三種同樣正確的方法解決這個問題。

在用 typedef 定義互相引用的兩個結構時也會產生類似的問題, 可以用同樣的方法解決。

參見問題 2.1

參考資料: [K&R1, Sec. 6.5 p. 101]; [K&R2, Sec. 6.5 p. 139]; [ISO, Sec. 6.5.2, Sec. 6.5.2.3]; [H&S, Sec. 5.6.1 pp. 132-3]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)