C에서 어떻게 기능적으로 순수한 링크 된 목록을 작성 하시겠습니까? 내가하고있는 링크드리스트인가? 개체 목록을 가지고 노력하고 있지만 외부 상태를 수정하지 않고 함수에서 목록에 항목을 추가하는 방법을 생각할 수 없습니다.링크 된 목록을 사용하는 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
를 수정하기 때문에 :
은 지금은 단지 있습니다. 원래 목록을 수정하지 않고, 항목이 추가 된 새 목록을 반환해야하기 때문에
기능 링크드 목록을 만들려면 여분의 요소로 전체 목록을 재구성하거나 요소를 맨 앞에 추가 할 수있는 역 링크 목록이 있어야합니다. – leppie
데이터 구조에 대한 함수 적 프로그래밍에 대해 진지하게 생각하고 있다면 http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf에 익숙해야합니다. 더 세련된 버전은 동일한 저자 인 책 형태로 제공됩니다. –