2
你會怎麼做在C功能純鏈表?鏈表是我應該做的甚麼?我想要有一個對象的列表,但我想不出如何從一個函數添加一個項目到列表中,而無需修改外部狀態。函數式編程使用鏈表
我基本上要這樣:
void AddItemToList(Item item);
爲了能夠從任何地方調用,而不必擔心被添加到列表什麼來電。
現在我只是有:
void AddTypeToList(entityType_t *type, entityType_t *listHead)
{
type->next = listHead;
listHead = type;
}
void RegisterEntityType(entityType_t *type)
{
AddTypeToList(type, typeList);
}
但是,這顯然不是功能(是嗎?),因爲RegisterEntityType
正在修改typeList
。 (這是一個全球性的entityType_t
)
有你不得不用額外的元素來重建整個列表,或者有一個反向的LinkedList在那裏你可以添加的元素添加到前面的功能鏈表。 – leppie
如果你認真地對數據結構的函數式編程,你應該熟悉本 - http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf - 如果你是不是已經。同一作者可以以書籍形式提供更精美的版本。 –