Список: Не могу реализовать вывод, а может и правильное добавление в список. - C (СИ)
Формулировка задачи:
Помогите пожалуйста. Не могу реализовать вывод, а может и правильное добавление в список.
Вообщем вот код:
#include <stdio.h> #include <stdlib.h> typedef struct INFO{ char name[20]; }; typedef struct LIST{ struct INFO info; //информация int count; //размер списка struct LIST *next; //указатель на след. }LIST; LIST *head = NULL; //указатель на голову int Add(struct INFO info){ LIST *temp; if(head == NULL){ //если голова пуста, то создаем элемент и помещаем в голову temp = (LIST *)malloc(sizeof(LIST)); temp->info = info; temp->count++; temp->next = NULL; head = temp; } else{ // иначе присваиваем голову, двигаемся до конца списка и добавляем элемент temp = head; while(temp != NULL) temp = temp->next; temp = (LIST *)malloc(sizeof(LIST)); temp->info = info; temp->count++; temp->next = NULL; } return(1); } void Print(void){ LIST *temp = head; // От головы идём до конца списка while(temp != NULL){ printf("%s\n", temp->info.name); temp = temp->next; } } void main() { struct INFO inf; scanf("%s", &inf.name); //добавляем 3 записи Add(inf); scanf("%s", &inf.name); Add(inf); scanf("%s", &inf.name); Add(inf); Print(); }
ПРОБЛЕМА
- выводит только первый добавленный элементРешение задачи: «Список: Не могу реализовать вывод, а может и правильное добавление в список.»
textual
Листинг программы
int x; // это глобальная переменная void func1(void) { char x; // это локальная переменная функции func1. Она перекрывает глобальную переменную x = 'a'; // обращение к локальной переменной функции { long x; // это локальная переменная блока. Она перекрывает локальную переменную функции x = 133; // обращение к локальной переменной блока } x = 'b'; // обращение к локальной переменной функции } void func2(void) { x = 3; обращение к глобальной переменной }
Объяснение кода листинга программы
- Объявлена глобальная переменная
x
типаint
. - В функции
func1
объявлена локальная переменнаяx
типаchar
. - В функции
func1
локальной переменнойx
присваивается значение'a'
. - В функции
func1
объявлена локальная переменная блокаx
типаlong
. - В функции
func1
локальной переменной блокаx
присваивается значение133
. - В функции
func1
локальной переменной функцииx
присваивается значение'b'
. - В функции
func2
локальной переменнойx
присваивается значение3
. - В функции
func2
происходит обращение к глобальной переменнойx
. - Значение глобальной переменной
x
не используется в функцииfunc2
. - В функции
func1
после выхода из блока, значение локальной переменной блокаx
не используется. - В функции
func1
после выхода из функции, значение локальной переменной функцииx
не используется. - Значение глобальной переменной
x
не используется после выхода из функцииfunc2
. - В функции
func1
иfunc2
нет использования библиотечных функций, файлов, стандартных библиотек и других компонентов стандартной библиотеки C. - В функции
func1
иfunc2
нет использования переменных, которые были объявлены в других функциях или блоках. - В функции
func1
иfunc2
нет использования типов данных, которые не были объявлены в списке. - В функции
func1
иfunc2
нет использования оператораsizeof
. - В функции
func1
иfunc2
нет использования оператораdelete
. - В функции
func1
иfunc2
нет использования оператораnew
. - В функции
func1
иfunc2
нет использования оператораmalloc
. - В функции
func1
иfunc2
нет использования оператораfree
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д