char name[10];
scanf("%s", name);
{
char *str; // Или char str или char str[10]
struct Node* next;
};
struct Node* head = malloc(sizeof(struct Node));
head->str = name;
#define MAXLEN 1024 // Задаемся максимальной длиной строки
struct Node *head;
if ((head = calloc(sizeof(struct Node) + MAXLEN,1)) == NULL)
puts("Cannot alloc memory");
head->str = head + sizeof(struct Node); // тут данные
strncpy(head->str¸ name, strlen(name));
typedef struct s_list
{
char *content;
struct s_list *next;
struct s_list *prev; // если список 2-связный
} t_list;
t_list *lstnew(void const *content) // создаем елемент\объект
{
t_list *obj;
obj = (t_list *)malloc(sizeof(t_list)); // выделяем память
//(можно проверить если выделение не произощло то вернуть NULL)
obj->content = //(копировать, дублировать данные из content)
obj->next = NULL; // инитить указатель на следующий
obj->prev = NULL; // инитить указатель на предыдущий если 2связный
return (obj); // вернуть указатель на созданый елемент\объект
}
void lstadd(t_list **lst, t_list *obj)
{
if (obj)
obj->next = *lst;
*lst = obj;
// только этот вариант не всем подходит так как условий есть много
// например:
// добавить в конец списка
// добавить в начало списка
// добавить по середине списка (и их вариации как в 2 связный или односвязный списки)
// для каждого из них реализация модернизируется а потому и код другой
}
{
t_list *list;
char *str
//...
list = NULL;
//...
lstadd(&list, lstnew("твоя строка или другой контент"));
}