Я предполагаю, что вам нужен связанный список строк фиксированной длины.
Если это правда, StackNewNode
должен использовать тип параметра const char*
в качестве ввода. Другой возможный способ - использовать строковый ввод фиксированной длины с использованием char SData[126]
.
. Кроме того, необходимо изменить строку stackNode->SData = SData;
, чтобы сделать копию строки, поскольку строки обычно не копируются с использованием простого оператора присваивания в C. Для этого сделана функция strcpy в string.h, но поскольку целевой буфер является строкой фиксированной длины размером 126, лучше использовать strncpy .
Кроме того, topstack
также должен возвращать строковый тип. Один из способов сделать это - вернуть тип const char *. Но будьте осторожны: если ваш узел свободен, возвращаемая строка больше не будет действительной. Поэтому вы можете сделать копию этой строки, используя strdup , а затем позволить функции, которая вызывает topstack
, освободить возвращенную строку. Другой способ - добавить новый параметр char* SData
в topstack
и скопировать содержимое узла связанного списка в SData
в теле функции (в этом случае предполагается, что SData выделяется функцией, которая вызовите topstack
и убедитесь, что строка имеет достаточно большой размер для содержания содержимого строки в узле связанного списка.
Наконец, то же самое относится и к pop
. Однако строка должна быть продублирована, поскольку функция освобождает узел связанного списка. Обратите внимание, что возвращать значение, вероятно, не нужно, поскольку функция topstack
уже может это сделать. Кроме того, popped
не определено и, вероятно, должно быть заменено на pop
.