Какой тип функции мне следует использовать? - PullRequest
0 голосов
/ 24 января 2019

У меня есть односвязный список со строкой wchar_t в качестве данных. Если я хочу добавить новый узел и заполнить его текстом, какой тип функции мне следует использовать?

Я пытался использовать свой тип связанного списка, но я не уверен, что это хороший способ. Это может быть что-то подобное?

typedef struct smth{
    wchar_t data;
    struct smth *next;
}smth;

smth* add_to_end(wchar_t *text, smth *head){
.
.
.
}

Я решил не вводить весь код, как можно меньше, чтобы показать, что я здесь делаю, и спросить, как он должен выглядеть?

1 Ответ

0 голосов
/ 24 января 2019

С помощью этой строки: 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;
...