Напишите программу, которая вставляет строки, введенные с клавиатуры, в список - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д