Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tubus1993
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 17
#1

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

28.11.2011, 23:31. Просмотров 376. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2011, 23:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Очередь,просто обьясните (C++):

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

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

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

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

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

Обьясните. - C++
Прошу помощи. Расскажите пожалуйста по пунктам где и что делает программа, что за функция.Заранее благодарен. #include &lt;stdio.h&gt; int...

7
Сыроежка
Заблокирован
28.11.2011, 23:47 #2
Обычно очередь как самостоятельный контейнер не существует, а для своей реализации использует какой-нибудь другой контейнер. Интерфейс очереди хорошо описан в стандартном классе С++ 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
tubus1993
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 17
30.11.2011, 18:55  [ТС] #3
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 #4
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
tubus1993
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 17
30.11.2011, 23:13  [ТС] #5
хм,по вашему ошибку выдает
0
Сыроежка
Заблокирован
30.11.2011, 23:28 #6
Цитата Сообщение от tubus1993 Посмотреть сообщение
хм,по вашему ошибку выдает
Это по вашему ошибку выдает, а не по моему!
0
tubus1993
1 / 1 / 0
Регистрация: 15.04.2011
Сообщений: 17
01.12.2011, 23:04  [ТС] #7
Хочу вывести на экран область value,но в самом классе данной области не видно,выдает ошибку `value' undeclared (first use this function) ,когда вписываю в методе
C++
1
cout<<value;
.C классами не содержащими структуры это прокатывало.
0
Сыроежка
Заблокирован
01.12.2011, 23:29 #8
Цитата Сообщение от 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
01.12.2011, 23:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 23:29
Привет! Вот еще темы с ответами:

Обьясните пожалуйста - C++
struct Test { void test(); }; int main() { Test *ptr = NULL; ptr-&gt;test(); }

Обьясните программу - C++
Обьясните пожалуста как и что делает эта программа и почему она это делает. // Листинг 9.10. // Передача указателей на объекты ...

Обьясните проограмму - C++
Объясните , пожалуйста, подробно каждую строчку. Спасибо. Сама задачка звучит так. Определить разность между наиб. и наим числом...

обьясните код - C++
обьсните пожалуста код...Каждая строка за что отвечает...а то я не оч понимаю... #include &quot;stdafx.h&quot; #include &lt;fstream&gt; using...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru