Как создать список? - C (СИ)

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

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

Нужно просто создать список(пожалуйста с подробностями)

Решение задачи: «Как создать список?»

textual
Листинг программы
#include <stdio.h>
 
struct Some
{
    int data;
    struct Some* next;
};
 
struct Some* inithead(int _data)
// Initializing a head of list
{
    struct Some* element = (struct Some *)malloc( sizeof(struct Some) );
    element->data = _data;
    element->next = NULL;
    return element;
}
 
int addelem(struct Some* _head, int _data)
// Adding an element to the tail of _head
{
    if (!_head) { printf("NULL-pointer head!\n"); return -1; }
 
    while (_head->next)
        _head = _head->next;
 
    _head->next = (struct Some *)malloc( sizeof(struct Some) );
    _head = _head->next;
 
    _head->data = _data;
    _head->next = NULL;
 
    return 0;
}
 
struct Some* findelem(struct Some* _head, int _index)
// Searches for an element by index
{
    if (!_head) { printf("NULL-pointer head!\n"); return NULL; }
    if (_index < 0) { printf("The index must be greater than 0. Or can be 0.\n"); return NULL; }
 
    int index = 0;
 
    while (_head->next && _index != index)
    {
        ++index; _head = _head->next;
    }
 
    if (_index != index) return NULL;
 
    return _head;
}
 
 
int main(void)
{
    struct Some* some = inithead(0);  // Создали голову
 
    printf("%d\n", some->data);  // Вывели значение головы на консоль
    for (int i = 1; i <= 10; ++i)
    {
        addelem(some, i);  // Добавили элемент, проинициализировали значением i
        printf("%d\n", findelem(some, i)->data);  // Вывели на экран
    }
 
    system("pause");
    return 0;
}

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

  1. Включаем заголовочный файл stdio.h, который содержит функции для ввода и вывода данных.
  2. Создаём структуру Some, которая содержит указатель на следующий элемент списка и значение данных.
  3. Функция inithead инициализирует голову списка, выделяя память под новый элемент списка и инициализируя его поля.
  4. Функция addelem добавляет элемент в конец списка, инициализируя его поля и устанавливая ссылку на следующий элемент.
  5. Функция findelem находит элемент списка по индексу, начиная с головы списка и переходя к следующему элементу до тех пор, пока не будет найден нужный элемент или пока не будут пройдены все элементы списка.
  6. В функции main создаём голову списка, инициализируя её значением 0.
  7. Выводим значение головы списка на консоль.
  8. Добавляем элементы в список, вызывая функцию addelem и передавая ей голову списка и значение i.
  9. Выводим значение нового элемента списка на консоль, вызывая функцию findelem и передавая ей голову списка и значение i.
  10. Приостанавливаем программу до нажатия клавиши, вызывая функцию system и передавая ей строку pause.
  11. Возвращаем 0, чтобы указать, что программа успешно завершилась.

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


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

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

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