Список: Не могу реализовать вывод, а может и правильное добавление в список. - 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; обращение к глобальной переменной
}

Объяснение кода листинга программы

  1. Объявлена глобальная переменная x типа int.
  2. В функции func1 объявлена локальная переменная x типа char.
  3. В функции func1 локальной переменной x присваивается значение 'a'.
  4. В функции func1 объявлена локальная переменная блока x типа long.
  5. В функции func1 локальной переменной блока x присваивается значение 133.
  6. В функции func1 локальной переменной функции x присваивается значение 'b'.
  7. В функции func2 локальной переменной x присваивается значение 3.
  8. В функции func2 происходит обращение к глобальной переменной x.
  9. Значение глобальной переменной x не используется в функции func2.
  10. В функции func1 после выхода из блока, значение локальной переменной блока x не используется.
  11. В функции func1 после выхода из функции, значение локальной переменной функции x не используется.
  12. Значение глобальной переменной x не используется после выхода из функции func2.
  13. В функции func1 и func2 нет использования библиотечных функций, файлов, стандартных библиотек и других компонентов стандартной библиотеки C.
  14. В функции func1 и func2 нет использования переменных, которые были объявлены в других функциях или блоках.
  15. В функции func1 и func2 нет использования типов данных, которые не были объявлены в списке.
  16. В функции func1 и func2 нет использования оператора sizeof.
  17. В функции func1 и func2 нет использования оператора delete.
  18. В функции func1 и func2 нет использования оператора new.
  19. В функции func1 и func2 нет использования оператора malloc.
  20. В функции func1 и func2 нет использования оператора free.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы