Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 15.04.2011
Сообщений: 17

Очередь,просто обьясните

28.11.2011, 23:31. Показов 638. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаймые друзья.Нужна помощь.Никак не могу найти хороший образей для очереди.
Мне нужен какой-нибудь элементарный образец,без шаблонов,без каких-либо узкоспециальных функций.
Просто очередь состаящая из чисел и манипуляции с указателями.А то в голове каша образовалась
Вот я написал просто класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
////////////////////////////////////////////////////////////////
class Queue               
   {
      private:
      int A;
      public:
      void inputprog(int d)       //ввод
      { 
           A = d;
      }
      void printprog()                  //выводит все числа
      { 
           cout << " " << A;
      }
      
      };
////////////////////////////////////////////////////////////////
int main()
   {
   srand(time(NULL));       
   Queue s1;   
   int k,n;
   cout<<"Vvedite kol-vo elementov ";
   cin>>k;
   for(int i=0;i<k;i++)
   {
   n=rand()%10;   
   s1.inputprog(n);
   s1.printprog();
   }
   getch();
   return 0;
   }
как мне его изменить что-бы получить очередь?
я конечно понимаю что это типо "первый зашел,первый вышел" Но как это сделать на правтике??

Добавлено через 1 час 16 минут
Вообще задача такая:

Создать объект типа «очередь». Перегрузить операторы ++ и -- как
функции-члены класса (постфиксные и префиксные): ++ добавляет
элемент в очередь (пустой элемент, например int i=0), -- извлекает

элемент из очереди. Оператор ! проверяет очередь на отсутствие
элементов.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2011, 23:31
Ответы с готовыми решениями:

Сформировать односвязную очередь из элементов, которые входят в очередь Q1, но не входят в очередь Q2
Составить программу обработки динамической структуры данных: сформировать односвязную очередь Q из элементов, которые входят в очередь Q1,...

Сформировать очередь по файлу целых чисел. Промоделировать очередь в супермаркете
Сформировать очередь по файлу целых чисел. Промоделировать очередь в супермаркете. В каждый момент времени происходит одно из событий:...

Очередь (сделать очередь, чтобы добавляло, удаляло, читало. Не STL.)
Помогите пожалуйста написать очередь. Есть Температура double и ее тип int ну и нужно сделать очередь, чтобы добавляло, удаляло, читало....

7
Заблокирован
28.11.2011, 23:47
Обычно очередь как самостоятельный контейнер не существует, а для своей реализации использует какой-нибудь другой контейнер. Интерфейс очереди хорошо описан в стандартном классе С++ std::queue

Вы моожете очередь реализовать либо с помощью массива фиксированной длины, либо с помощью динамически выделяемой памятью для каждого нового элемента, включаемого в очередь. Оператор ++ и -- очень легко определяются через уже существующий интерфейс очереди. Нужно просто видеть вашу реализацию очереди.

Добавлено через 6 минут
tubus1993,

Допустим у вас есть очередь queue (как-то там вы ее реализовали) и есть метод класса push, тогда оператор прединкремента ++ можно реализовать следующим образом:

C++
1
2
3
4
5
6
7
8
9
10
11
12
class queue
{
public:
...
   queue & operator ++()
   {
      push( 0 );
      return ( *this );
   }
 
  ...
};
1
1 / 1 / 1
Регистрация: 15.04.2011
Сообщений: 17
30.11.2011, 18:55  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <conio.h>
using namespace std;
 
class queue
{
private:
        struct Node
        {
           int value;
           Node* next;
        };
        Node* first;
        Node* last;
public:
queue()
{
   first=NULL;
   last=first;
}
void add(int v)
{
  if(first=NULL)
  {
  first=new Node;
  first->value=v;
  first->next=NULL;
  last=first;
  }
  else
  {
  Node* temp=new Node;
  temp->value=v;
  temp->next=NULL;
  temp->next=temp;
  last=temp;
  }
}
int isEmpty()
{
    return(first==NULL);
}
int remove()
{
    int result=0;
    if(!isEmpty())
    {
    result=first->value;
    Node* temp=first;
    delete temp;
    }
    return result;
}
~queue()
{
    while(!isEmpty())
    remove();
}
};
 
int main()
{
   queue q;
   cout<<"Enter elements queue\n";
   do
   {
      int c;
      cin>>c;
      if(c==0)
      {
          break;
      }
      q.add(c);
   }
   while (true);
   getch(); 
   return 0;
}
Вот я создал работоспособную очередь.Теперь мне надо заменить перегрузить ++ что-бы он работал как метод add,-- как remove() и ! как sEmpty(),так?
0
Заблокирован
30.11.2011, 20:54
tubus1993,

Я бы ваш класс Node добавил бы конструктор

C++
1
2
3
4
5
6
        struct Node
        {
           Node( int x = 0 ) : value( x ), next( 0 ) {}
           int value;
           Node* next;
        };

Тогда бы функция add могла бы выглядеть следующим образом

C++
1
2
3
4
5
6
void add(int v)
{
  if(first=NULL)
  {
  first=new Node( x );
 ...
0
1 / 1 / 1
Регистрация: 15.04.2011
Сообщений: 17
30.11.2011, 23:13  [ТС]
хм,по вашему ошибку выдает
0
Заблокирован
30.11.2011, 23:28
Цитата Сообщение от tubus1993 Посмотреть сообщение
хм,по вашему ошибку выдает
Это по вашему ошибку выдает, а не по моему!
0
1 / 1 / 1
Регистрация: 15.04.2011
Сообщений: 17
01.12.2011, 23:04  [ТС]
Хочу вывести на экран область value,но в самом классе данной области не видно,выдает ошибку `value' undeclared (first use this function) ,когда вписываю в методе
C++
1
cout<<value;
.C классами не содержащими структуры это прокатывало.
0
Заблокирован
01.12.2011, 23:29
Цитата Сообщение от tubus1993 Посмотреть сообщение
Хочу вывести на экран область value,но в самом классе данной области не видно,выдает ошибку `value' undeclared (first use this function) ,когда вписываю в методе
C++
1
cout<<value;
.C классами не содержащими структуры это прокатывало.
Надо уточнить, в каком месте вы хотите ее вывести. Если внутри метода вашего класса queue, то надо писать Node::value. Если во внешнем блоке, то надо использовать оператор обращения к данным через объект класса. То еасть если есть объект

C++
1
queue q;
то

C++
1
q.Node::value
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.12.2011, 23:29
Помогаю со студенческими работами здесь

Дана очередь с вещественными числами, упорядоченными по убыванию. Добавить в очередь среднее арифметическое элементов
Дана очередь с вещественными числами, упорядоченными по убыванию. Добавить в очередь среднее арифметическое элементов очереди, не...

Задача на очередь (вывод сообщения, что очередь пуста)
Доброго дня! Есть задачка на очередь, которая работает нормально, только надо добавить код, чтобы выводил сообщение, что очередь пуста.....

Очередь, теория. Очередь на шести стеках
Здравствуйте, пытаюсь побольше найти информации про очереди и их применение в программировании. Из того что я нашел, все описывается лишь...

Работа с очередью. Умейте поставить в очередь элемент, удалить элемент из очереди, пересмотреть очередь
То чувство , когда изучали web и тут нам дают задачу по с++ ... Нужна помощь !!

Создать очередь. Добавить элемент в очередь. Удалить элемент из очереди
Нужно создать очередь. Добавить элемент в очередь. Удалить элемент из очереди. Вот моё &quot;творение&quot;. int main() { int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru