2017-10-19 190 views
3

例如,使用C,比方說,我定義了一個節點是這樣的:在另一個只包含列表頭部的結構中,是否認爲是不好的做法或反模式?

typedef struct nde { 
    int val; 
    struct nde* next; 
}node; 

然後我「包裝」它是這樣的:

typedef struct lst { 
    node* head; 
}list; 

我的具體內容是這種情況。我知道如果你想包含其他信息,使用包裝可能會很有用,但如果它只包含一個指向頭部的指針,它會被認爲是「不好的做法」?這對我來說是一種更直觀的方式,主要是因爲在推送或彈出或使用其他函數時,您將一直解除引用,命名約定也更有意義。

+0

我相信這是一個很好的模式。 –

回答

8

不,這不是反模式,實際上並不少見。這使您可以擁有一個引用該列表的單個句柄,該元素在刪除元素時不會更改。如果你不這樣做,那麼刪除列表的第一個元素是一個特例,因爲你需要更新調用者的指針來指向新的頭部。如果有多個引用列表,幾乎不可能安排更新它們。

如果您知道只會有一個對列表的引用,那麼就沒有必要這樣做。

+2

平衡的答案。 – chux

相關問題