Для чистого стека потребуется только указатель top . Возможно, вы используете эту структуру данных как queue , добавляя в конце, беря с начала.
A связанный список нуждается только в head , но для добавления к концу tail было бы полезно.
struct linkedlist
{
struct listnode* head;
struct listnode* tail;
int count; // Might be useful
}
(я использовал условные названия.)
Можно упомянуть двусвязный список с:
struct node
{
struct node* previous;
struct node* next;
int val;
};
Что позволило бы полностью симметрично использовать голову и хвост.