Я бы хотел реализовать стек, используя связанный список.
Чтобы реализовать pop () для моего стека, я должен передать вызывающему объект двойной указатель (указатель на указатель), который (в конечном итоге) указывает на вершину моего стека (первая запись в связанном списке).
Причина, по которой я так поступаю, заключается в том, что таким образом вызывающая сторона может сохранять статический указатель на стек.
Структура элемента моего связанного списка:
struct Element {
int value;
struct Element *next;
};
pop () реализация:
int pop (struct Element **stack) {
int popped_value = *stack->value;
*stack = *stack->next;
return popped_value;
}
Проблема, которую я имею, пытается разыменовать стек двойного указателя **. Этот код генерирует следующую ошибку:
error: request for member ‘value’ in something not a structure
error: request for member ‘next’ in something not a structure
По-моему, либо * stack-> value, либо ** stack.value должны работать для получения popped_value, но я получаю ту же ошибку.