Я работаю над реализацией динамического связанного списка в C, чтобы освежить свои навыки в C.
Вот простая структура, которую я использую для представления LinkedList:
typedef struct List
{
Node_t* head;
Node_t* tail;
uint32_t length;
void (*add)(Node_t* head, void* data);
} List_t;
Я пишу все это в своем собственном C-файле с надеждой, что я смогу включить его в какой-нибудь другой C-файл и использовать реализацию связанного списка, которую я написал.
Вы заметите, что у меня есть указатель на функцию, которая добавит узел в связанный список. (У меня есть несколько функций, кроме add, но я просто хотел сначала выяснить это)
Если бы я использовал этот связанный список прямо сейчас, я бы назвал его таковым
List_t* list = GetList(); /* this is a constructor like method I wrote*/
list->add(list->head, someData);
Можно ли закодировать его в ОО-стиле, чтобы все, что мне нужно было бы сделать, это позвонить:
list->add(someData);
Не передавая в начале списка функцию add ()? Мои инстинкты говорят мне, что это невозможно, но мне действительно нравится идея заставить мои связанные списки работать таким образом.
-Akron
Редактировать: исправлена ссылка для добавления, чтобы отразить тот факт, что список является указателем
Редактировать: Похоже, общее согласие нет. Спасибо за советы / ответы