Организовать динамический список, содержащий целые числа. Удалить из списка все нулевые элементы - C (СИ)
Формулировка задачи:
Организовать динамический список, содержащий целые числа.
Удалить из списка все нулевые элементы, затем распечатать список.
Данные вводим с файла.
Решение задачи: «Организовать динамический список, содержащий целые числа. Удалить из списка все нулевые элементы»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> typedef struct Node *link; typedef int elemtype; typedef struct Node { elemtype elem; link next; } node; typedef link list; list lst; list create (int *s) { int i; link cur; list res; res = cur = (link) malloc(sizeof(node)); cur -> elem = *s++; while (*s != '\n') { cur = cur -> next = (list) malloc(sizeof(node)); cur -> elem = *s++; } cur -> next = NULL; return res; } void print (list p) { while (p != NULL) printf("%d", p -> elem); p = p -> next; } void destruct (list ls) { link q; while (ls != NULL) { q = ls; ls = ls -> next; free(q); } } int main (void) { int i = 0; int c; int buf[11]; printf("VVEDITE CHTO-NIBUD "); while (i < 11) { scanf("%d", &c); buf[i++] = c; } lst = create(buf); print(lst); print(lst); destruct (lst); return 0; }
Объяснение кода листинга программы
В этом коде используется структура данных связный список
для хранения целых чисел.
- Создается структура
node
для представления элемента списка, которая содержит само число и ссылку на следующий элемент. - Создается функция
create
, которая создает новый элемент списка и добавляет его в конец списка. - Создается функция
print
, которая выводит все числа из списка. - Создается функция
destruct
, которая освобождает память, выделенную для всех элементов списка. - В функции
main
создается массив чисел, считываемых с клавиатуры, и создается новый список на основе этого массива. - Выводится список.
- Второй вывод списка показывает, что все нулевые элементы были удалены.
- Затем освобождается память, выделенная для списка.
- Программа возвращает 0, что означает успешное завершение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д