Напишите программу, которая вставляет строки, введенные с клавиатуры, в список - C (СИ)
Формулировка задачи:
Ребята, всем привет!
Задание было такое
"Напишите программу, которая вставляет строки, введенные с клавиатуры, в список" Нужно было использовать функция gets(), вот с ней мне кажется у меня и проблема. Почему то во все элементы списка добавляется только строка, которая была введена последней/ Помогите разобраться
list.h
list.c
main.c
typedef struct Node Node;
typedef struct List List;
struct Node{
char* string;
struct Node* next;
};
struct List{
struct Node *first;
}List_;List* create_list(void){
List* List_ = (List*) malloc(sizeof(List));
List_->first = NULL;
List_->sz = 0;
return List_;
}
Node* new_elem(void) {
Node *elem = (Node*) malloc(sizeof(Node));
elem->next = NULL;
return elem;
}
void insert_elem(char* str)
{
Node* elem = new_elem();
if (NULL == List_.first){
List_.first = elem;
}
Node* curr = List_.first;
while (NULL != curr->next)
curr = curr->next;
curr->next = elem;
elem->next = NULL;
elem->string =(char*)malloc(sizeof(char)*(strlen(str)+1));
elem->string = str;
}
void printlist(void) {
Node* curr = List_.first;
int i;
//for (i = 0; i < List_.sz; i++) {
while(NULL != curr){
printf("%s\n",curr->string);
curr = curr->next;
}
}#include "list.h"
int main(void)
{
List* List_ = create_list();
char st[256];
gets(st);
insert_elem(st);
gets(st);
insert_elem(st);
gets(st);
insert_elem(st);
printlist();
return 0;
}Решение задачи: «Напишите программу, которая вставляет строки, введенные с клавиатуры, в список»
textual
Листинг программы
elem->string = str;