Список FIFO со стеками - C (СИ)

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

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

Доброго времени суток! Прошу вашей помощи в решении моей проблемы. Имеется вот такое условие задачи:

Список ФИФО со стэками Написать программу,управляющую динамическими структурами. Система распространения слухов(так называемый глухой телефон).Пусть будет очередь распространителей(слухов)с возможностью добавления, удаления и т.д.Каждый распространитель держит у себя в стеке полученные от предыдущего распространителя слухи.Слухи распространяются по следующим правилам. В момент получения слуха,распространитель : -с шансом q "берет" со стека следующий слух и передаёт следующему распространителю -полученный слух распространитель с шансом p передает дальше,а с шансом 1-p кладет в свой стек -q<p<0.5 Программа должна позволять в любое время просматривать и модифицировать структуры данных.

[/I] Суть проблемы в создании самого списка ФИФО со стеками внутри Спасибо

Решение задачи: «Список FIFO со стеками»

textual
Листинг программы
#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, после чего добавляет каждый стек в очередь. Затем код извлекает элементы из очереди и выводит их на экран. Вот список действий, которые происходят в коде:

  1. Создание очереди и инициализация ее пустым списком.
  2. Создание 4 стеков и инициализация их пустыми списками.
  3. Заполнение каждого стека 4 случайными числами от 0 до 9.
  4. Добавление каждого стека в очередь.
  5. Извлечение элементов из очереди и их вывод на экран.
  6. Удаление стека из очереди.
  7. Удаление стека.
  8. Повторение шагов 5-7 для всех элементов в очереди.
  9. Удаление очереди.
  10. Возврат 0, что означает успешное выполнение программы.

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


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

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

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