Список FIFO со стеками - C (СИ)
Формулировка задачи:
Список ФИФО со стэками Написать программу,управляющую динамическими структурами. Система распространения слухов(так называемый глухой телефон).Пусть будет очередь распространителей(слухов)с возможностью добавления, удаления и т.д.Каждый распространитель держит у себя в стеке полученные от предыдущего распространителя слухи.Слухи распространяются по следующим правилам. В момент получения слуха,распространитель : -с шансом q "берет" со стека следующий слух и передаёт следующему распространителю -полученный слух распространитель с шансом p передает дальше,а с шансом 1-p кладет в свой стек -q<p<0.5 Программа должна позволять в любое время просматривать и модифицировать структуры данных.
[/I] Суть проблемы в создании самого списка ФИФО со стеками внутри СпасибоРешение задачи: «Список FIFO со стеками»
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "queue.h"
#include "stack.h"
int main(void)
{
QUEUE_HANDLE queue;
srand(time(NULL));
QueueCreate(&queue, sizeof(QUEUE_HANDLE));
for (int i = 0; i < 4; i++)
{
STACK_HANDLE s;
StackCreate(&s, sizeof(int));
for (int j = 0; j < 4; j++)
{
int temp = rand() % 10;
StackPush(s, &temp);
printf("Item %d pushed to stack # %d\n", temp, i + 1);
}
printf("--------\n");
QueueEnqueue(queue, &s);
}
printf("==================\n==================\n");
printf("Contents of queue:\n");
int i = 0;
while (!IsQueueEmpty(queue))
{
STACK_HANDLE s;
QueueDequeue(queue, &s);
while (!IsStackEmpty(s))
{
int temp;
StackPop(s, &temp);
printf("Extracted item %d from stack # %d\n", temp, i + 1);
}
printf("--------\n");
i++;
StackDelete(&s);
}
QueueDelete(&queue);
return 0;
}
Объяснение кода листинга программы
В данном коде используется связка из двух структур данных: очереди и стеки. Стек представлен как односвязный список, где каждый элемент содержит пару полей: значение и указатель на следующий элемент стека. Очередь представлена как двусвязный список, где каждый элемент содержит пару полей: значение и указатель на следующий элемент очереди. Код создает 4 стека и заполняет их случайными числами от 0 до 9, после чего добавляет каждый стек в очередь. Затем код извлекает элементы из очереди и выводит их на экран. Вот список действий, которые происходят в коде:
- Создание очереди и инициализация ее пустым списком.
- Создание 4 стеков и инициализация их пустыми списками.
- Заполнение каждого стека 4 случайными числами от 0 до 9.
- Добавление каждого стека в очередь.
- Извлечение элементов из очереди и их вывод на экран.
- Удаление стека из очереди.
- Удаление стека.
- Повторение шагов 5-7 для всех элементов в очереди.
- Удаление очереди.
- Возврат 0, что означает успешное выполнение программы.