С помощью этой строки: wchar_t data;
вы можете сохранить только один широкий символ.
Относительно функции, которую вы показали smth* add_to_end(wchar_t *text, smth *head)
: нет необходимости передавать указатель на wchar_t
в этой функции,поскольку в определении узла вы намереваетесь оставить только один широкий символ.
Если вы не хотите делать указатель head
глобальным, то я думаю, что вам нужно будет каждый раз передавать новый head
звонят add_to_end
вместе с data
.И тогда функция this возвращает обновленный head
связанного списка, который вы можете собрать позже где-нибудь в коде.Возвращенный smth*
будет новой головой.
Внутри функции, add_to_end
, вы можете захотеть что-то вроде этого:
// Assuming prototype as smth* add_to_end(wchar_t text, smth *head)
struct tmp* = malloc(sizeof(struct));
if(tmp == NULL)
{
printf("\nMemory allocation failed");
return NULL;
}
tmp->data = text;
tmp->next = head;
head = tmp;
return tmp;