powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пример кольцевой очереди
25 сообщений из 36, страница 1 из 2
Пример кольцевой очереди
    #35563316
Lina89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте, есть у кого-нибудь пример реализации кольцевой очереди на С++, облазила весь интернет вот уже два дня, но так и не нашла хоть какого-нибудь нормального примера. За ранее спасибо.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35563361
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поищите может быть очередь с максимальной длиной, очередь с переполнением.
Я о таких не слышал. Ну и кстати если у вас есть просто очередь, в которой можно легко вычислить длину, то сделать над ней адаптер для реализации переполнения очень просто.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35563599
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что реализовать кольцевой буфер с методами front(), back(), push_back(), pop_front(), size(), empty() и подсунуть его в std::queue сложно?
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35563732
Lina89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blindedА что реализовать кольцевой буфер с методами front(), back(), push_back(), pop_front(), size(), empty() и подсунуть его в std::queue сложно?
Честно, наверное сложновато, поэтому и прошу пример, хотя посмотреть как это делается.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35563753
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Готового кода нет, но могу помочь разобраться
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35563815
Lina89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blindedГотового кода нет, но могу помочь разобраться
Я была бы очень признательна.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35563904
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lina89Здраствуйте, есть у кого-нибудь пример реализации кольцевой очереди на С++, облазила весь интернет вот уже два дня, но так и не нашла хоть какого-нибудь нормального примера. За ранее спасибо.

все решаеться очень просто :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#include <conio.h>
#include <stdio.h>
#define count_element  5 

void main()
 {
  int mas[count_element],
      number_element=- 1 ;
  clrscr();
  do
   {
    printf("Vvedite element ocheredi: ");
    scanf("%d",&mas[++number_element%=count_element]);
    printf("Ochered: ");
    for (int j= 0 ;j<count_element;j++)
     printf("%d ",mas[j]);
    printf("\nNagmite ESC dlya vixoda ili lubuy druguy klavishu dlya prodolgeniya...\n\n");
   }
  while (getch()!= 27 );
 }

основную роль в этой программе играет операция вычисления остатка от деления или если говорить по простому mod :)

если программа не понятна моя ICQ #217030476

Модератор: Научитесь пож. пользоваться тэгом SRC ! Не code, и не HTML-style-теги.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35563954
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий, твой код неплох, но в очереди надо выделить интерфейсную часть. Кроме того не хватает некоторых проверок. В частности, при добавлении нового элемента, старый затирается молча. Такая реализация очереди будет иметь ограниченное применение.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35563985
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и не очередь это вовсе, а пример добавления элемента в кольцевой буфер
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35564129
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВасилий, твой код неплох, но в очереди надо выделить интерфейсную часть. Кроме того не хватает некоторых проверок. В частности, при добавлении нового элемента, старый затирается молча. Такая реализация очереди будет иметь ограниченное применение.
Критика принимаеться :), нехотелось возиться долго писал толи в 3 толи в 4 часа утра тем более вдруг ей этот вариант подойдет ?:), ведь реальной реализации кольцевой очереди она может и не понять :) а так я дал увидеть принцип работы кольцевой очереди а все остальное... если голова на плечах сама напишет :)
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35564132
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedДа и не очередь это вовсе, а пример добавления элемента в кольцевой буфер
брысь :), любая очередь при программной реализации в себе содержит буфер :) для приема заявок и хранения, а то как ты работаешь с этим буфером и определяет очередь :) мат. часть учите :)
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35564222
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович blindedДа и не очередь это вовсе, а пример добавления элемента в кольцевой буфер
брысь :), любая очередь при программной реализации в себе содержит буфер :) для приема заявок и хранения, а то как ты работаешь с этим буфером и определяет очередь :) мат. часть учите :)
"Летать не умеют. Стрелять тоже... пока не умеют... Но... орлы!"(с) Маэстро
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35567640
Lina89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос по прежнему актуален.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35567732
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lina89Вопрос по прежнему актуален.
Чем не подошёл код Василия? Препод забраковал? Уточни ТЗ.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35568346
Lina89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Чем не подошёл код Василия? Препод забраковал? Уточни ТЗ.
Мне нужно реализовать на основе динамических структур, а не на основе массива. А нашим преподам феолетова как ты пишешь они вообще не в чем не разбираются, кстати ищу пример для себя, лабу про кольцевую очередь мы не делаем - преподы сказали пропустить, вот поэтому и интересно.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35568440
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это сложный вопрос. Кнут, когда писал свою книгу, похоже не знал про кольцевую очередь.
В другой более современной по характеру изложения книге очередью называется любая
реализация механизма FIFO.То есть конструкция принципиально обладающая
началом и концом,а как известно "У кольца начала нет и нет конца"
Кольцевыми по этой книге бывают только буфера и списки.
И в частности можно реализовать, и иногда действительно реализуют очередь
( я не имел ввиду пример Василия Викторовича), с помощью циклического буфера.
В инете же я быстро нашел
http://rk6.bmstu.ru/electronic_book/posapr/zadanpo/Ochered.htm
,
где автор пишет "... очереди, известную как очередь с кольцевым фиксированным
буфером (RingQueue) " Из чего я сначала сделал вывод, что автор где-то в не нашей литературе
нашел термин RingQueue для обозначения очереди с кольцевым фиксированным буфером.
Но потом вот здесь http://www.magcondiform.net/?frommenu=1&text=5
в документации к
MS Visual Studio 2005 я нашел определение:
MS Visual Studio 2005"Кольцевая очередь - это разновидность обычной очереди.
Она также представляет концепцию FIFO (First In First Out), то есть элемент, который добавили в
очередь первым, первым ее и покинет. Отличие состоит в том, что элемент, покидающий очередь,
не будет теряться безвозвратно, он будет перемещаться в её конец (см. рисунок)...."
Рисунок у меня не показался, но все равно само понятие мне показалось довольно бессмысленным.
Поэтому предлагаю Вам послушаться "преподов", т.е. наплевать и забыть.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35568604
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно преподы хотели предоставить инициативу, но потом запарились и решили что ну ево нафиг.

P.S. Я еще вспомнил про MRU/LRU lists. И это тоже - списки со свойствами похожими на кольца.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35568721
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lina89 mayton
Чем не подошёл код Василия? Препод забраковал? Уточни ТЗ.
Мне нужно реализовать на основе динамических структур, а не на основе массива. А нашим преподам феолетова как ты пишешь они вообще не в чем не разбираются, кстати ищу пример для себя, лабу про кольцевую очередь мы не делаем - преподы сказали пропустить, вот поэтому и интересно.
реализовать кольцевую очередь на основе динамических структур данных могу, если надо пиши мне в ICQ (#217030476), выкладывать код на форуме не буду т. к. его будет много я а невижу смысла т. к. это чисто учиническая задача и все ее в студенчестве скорее всего решали
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35568762
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что в нем много то? если правильно понял ТЗ нужен класс который умеет создавать допустим структуры в которой 3 поля :одно данные, другие указатель на следующий и предыдущий элемент все в принципе. ну еще в классе указатель на текущий элемент, метод хождения по очереди
--переприсвоение указателя, и методы добавить, удалить которые опять же поменять 2 указателя и создать/грохнуть объект.
кстати помнится как-то давно такая фигня пригодилась на практике. уже не помню для чего, можно было конечно и по другому, но тогда это показалось простым и эффективным решением.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35573470
Lina89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Василий Викторовичесли надо пиши мне в ICQ
Я если честно ей не пользуюсь, если не сложно отправьте на linaOg@yandex.ru
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35573474
Lina89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pempА что в нем много то? если правильно понял ТЗ нужен класс который умеет создавать допустим структуры в которой 3 поля :одно данные, другие указатель на следующий и предыдущий элемент все в принципе. ну еще в классе указатель на текущий элемент, метод хождения по очереди
--переприсвоение указателя, и методы добавить, удалить которые опять же поменять 2 указателя и создать/грохнуть объект.
кстати помнится как-то давно такая фигня пригодилась на практике. уже не помню для чего, можно было конечно и по другому, но тогда это показалось простым и эффективным решением.
Если не сложно покажите реализации, или отправьте на linaOg@yandex.ru
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35573501
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Линочка, лапочка, ты нормальную незакольцованную очередь сделать можешь? Находила такие примеры в интернете? А в учебник заглядывала?
Вот сделай простую нормальную очередь, а потом из последнего элемента сделай ссылку на первый, а из первого на последний. И все, вся задача решена.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35573833
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>avb1003
> ... т.е. наплевать и забыть.
Многие годы занимался разработкой ПО для компьтерных (компьютеризированных) систем управления периодическими хим. процессами. Важный элемент - съем и обработка информации датчиков. Для согласования работы этих процессов не нашел ничего лучшего, как использовать демфирующий буфер (очередь?). Для 1010B (а-ля PDP-8) функции работы с данными структурам инаписаны на ассемблере. Наверное в тоже время, когда Кнут выпускал свои книги, а может быть и раньше. Привожу код на С# работы с циклическим массивом в прототипе, для согласования работы множества серверов приложений пула (возможно,на разных компьютерах сети) с одним процессом обработки:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
    int УЗ= 0 ;  //-- индекс (указатель) элемента записи
    int УЧ= 0 ; //-- индекс (указатель) элемента чтения
    const int cnt_Размер= 32 ;  //-- размер циклического массива в сообщениях (=числу серверов приложений пула)
    byte[][] запросы=new byte[cnt_Размер][];

    //-- Читаем запрос из циклического массива запросов
    //-- выход: byte[] - байтовая строка ошибки
    //=================================================
    byte[] fЧтениеЗапроса() {
      byte[] abb=null;
      if(УЗ!=УЧ) { //-- Есть не обработанный запрос
        abb=запросы[УЧ];
        if(++УЧ==cnt_Размер) УЧ= 0 ;
      }
      return abb;
    }
    //-- Пишем запрос в циклической массив запросов
    //-- byte[] - байтовая строка запроса
    //-- если byte[] ответа =null, то штатно
    //=================================================
    void fЗаписьЗапроса(byte[] bbb) {
      запросы[УЗ]=bbb;
      if(++УЗ==cnt_Размер) УЗ= 0 ;
      if(УЗ==УЧ) {if(++УЧ==cnt_Размер) УЧ= 0 ;}
    }
С уважением, Владимир.
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35574197
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев...
А зачем имена переменных - национальными символами?

Любопытно...
...
Рейтинг: 0 / 0
Пример кольцевой очереди
    #35574217
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да это 1C
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пример кольцевой очереди
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]