Создание и заполнение динамического односвязного списка - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Выручайте! Никак не могу понять как создать и заполнить односвязный список! На лекции дают какими-то отдельными кусками, причем удаление элемента, перемещение, а как создать список непонятно! Алгоритм записан такой: 1)создать пустой список (указатель списка равен NULL) 2)создание нового эл-а списка. выделение памяти и занесение в список. Уже 2ой час пытаюсь написать программу, например, необходимо заносить вводимые с клавиатуры числа в динамический список, вида:
struct LIST{
int number;
struct LIST *next;
};
Выручайте!

Решение задачи: «Создание и заполнение динамического односвязного списка»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
struct LIST {
    int number;
    struct LIST *next;
};
 
//-----------------------------------------------------------------------------
void Push(struct LIST** list, int number) {
    struct LIST* node = malloc(sizeof(struct LIST));
    node->number = number;
    node->next = *list;
    *list = node;
}
//-----------------------------------------------------------------------------
void Print(const struct LIST* list) {
    if (list) {
        Print(list->next);
        printf("%d ", list->number);
    }
}
//-----------------------------------------------------------------------------
 
int main() {
    int i = 10;
    struct LIST* list = NULL;
 
    while (i--) {
        Push(&list, i + 1);
    }
 
    Print(list);
 
    return 0;
}

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

  1. Создание структуры данных LIST с полями number и next.
  2. Создание функции Push для добавления элемента в начало списка.
  3. Создание функции Print для печати списка.
  4. Инициализация переменной i со значением 10.
  5. Инициализация указателя list со значением NULL.
  6. В цикле while вызывается функция Push для добавления элемента в список.
  7. Вызывается функция Print для печати списка.
  8. Возвращается значение 0, что означает успешный конец работы программы.

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


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

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

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