Создать список из случайных целых чисел, лежащих в диапазоне - C (СИ)
Формулировка задачи:
Решение задачи: «Создать список из случайных целых чисел, лежащих в диапазоне»
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <assert.h> struct TNode { int value; struct TNode* next; }; struct TQueue { struct TNode* head; struct TNode* tail; }; //----------------------------------------------// struct TQueue* Push(struct TQueue* queue, int value) { assert(queue != NULL); struct TNode* node = (struct TNode*) malloc(sizeof(struct TNode)); node->value = value; node->next = NULL; if (queue->tail) { queue->tail->next = node; } queue->tail = node; if (queue->head == NULL) { queue->head = node; } return queue; } //----------------------------------------------// int Pop(struct TQueue* queue) { assert(queue != NULL); assert(queue->head != NULL); struct TNode* node = queue->head; queue->head = queue->head->next; int value = node->value; free(node); return value; } //----------------------------------------------// int IsNull(struct TQueue queue) { return (queue.head == NULL); } //----------------------------------------------// void Clear(struct TQueue* queue) { for (; !IsNull(*queue); Pop(queue)); queue->tail = NULL; } //----------------------------------------------// void Print(struct TQueue queue) { for (; queue.head; queue.head = queue.head->next) { printf("%d ", queue.head->value); } printf("\n"); } //----------------------------------------------// int main(int argc, const char* argv[]) { srand(time(NULL)); struct TQueue queue = {NULL, NULL}; size_t i; for (i = 0; i < 20; ++i) { Push(&queue, rand()%100 - 50); } printf("base list: "); Print(queue); struct TQueue q1 = {NULL, NULL}; struct TQueue q2 = {NULL, NULL}; while (!IsNull(queue)) { int value = Pop(&queue); if (value > 0) { Push(&q1, value); } else { Push(&q2, value); } } printf("q1: "); Print(q1); printf("q2: "); Print(q2); system("pause"); return 0; }
Объяснение кода листинга программы
В этом коде используется структура данных очередь
(queue), реализованная с помощью связанных списков (linked lists).
Список содержит 20 случайных целых чисел, сгенерированных в диапазоне от -50 до 50.
Код также содержит две другие структуры данных, q1 и q2, которые также являются очередями.
В основной части программы код сначала заполняет исходную очередь случайными числами. Затем код извлекает элементы из исходной очереди и добавляет их в q1 и q2 в зависимости от знака числа.
После того, как исходная очередь пуста, код выводит содержимое q1 и q2.
Код также включает функцию IsNull, которая проверяет, является ли очередь пустой, и функцию Clear, которая очищает очередь.
Код использует функцию rand из стандартной библиотеки C для генерации случайных чисел.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д