Форум программистов, компьютерный форум CyberForum.ru

класс очередь - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.76
nick07x
2 / 2 / 0
Регистрация: 21.03.2011
Сообщений: 55
30.10.2011, 23:48     класс очередь #1
реализовать класс очередь, написать прототипы необходимых функций-членов к нему, 2 из них реализовать полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 23:48     класс очередь
Посмотрите здесь:

C++ Описать класс, реализующий очередь целых чисел типа FIFO.
C++ Класс круговая очередь Помoгите плз
Очередь и класс C++
Хелп! родовой класс, который реализовывал бы очередь C++
Класс «Дек» (двусторонняя очередь) C++
Параметризованный класс(поле - список адаптера контейнера - очередь с приоритетом) C++
C++ Создайте класс, в котором есть ostream& operator<<. Класс должен содержать очередь с приоритетом
Параметризованый класс - очередь C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nick07x
2 / 2 / 0
Регистрация: 21.03.2011
Сообщений: 55
08.11.2011, 10:24  [ТС]     класс очередь #2
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include <iostream> 
using namespace std; 
 
class Queue {   
static const int SIZE=100; 
int *queue; 
   int head, tail; 
public :
   Queue () ; 
   void push ( int num ) ; 
   friend void out(Queue q);
   int size();
   void pop();
   int front();
   int back();
} ; 
//----------------
Queue::Queue() 
{
   queue = new int[SIZE];
   head = tail = 0 ; 
} 
//----------------
void out(Queue q){
    for(int i=q.head+1;i<q.tail+1;i++)
    {cout<<" "<<q.queue[i];}
}
//----------------
void Queue::push ( int num ) 
{ 
   if ( tail+1 ==head || ( tail+ 1 ==SIZE && !head )) { 
     cout << "очередь полна\n" ; 
     return ; 
   } 
   tail++; 
   if ( tail==SIZE ) tail = 0 ;
   queue [ tail ] = num; 
} 
//----------------
void Queue::pop() 
{ 
   if ( head == tail ) { 
     cout << "очередь пуста\n" ; 
     return ;
   } 
   head++; 
   if ( head==SIZE ) head = 0 ; 
  
} 
//----------------
int Queue::size()
{   int s=0;
    for(int i=head;i<tail;i++)
    {
        s++;
    }
    return s;
}
//----------------
int Queue::back()
{
    return queue[tail];
}
//----------------
int Queue::front()
{
    return queue[head+1];
}
//---------------
int main () 
{
   setlocale(LC_ALL,"rus");
   Queue queue1, queue2; 
   int i; 
   for (i= 1 ; i <= 5 ; i++ ) { 
   queue1.push ( i ) ;} 
   cout<<"Изначальная очередь ";
   out(queue1);
   cout<<endl;
   cout<<"введите еще элемент: ";
   int n;
   cin>>n;
   queue1.push(n);
   cout<<"теперь очередь имеет следующий вид"<<endl;
   out(queue1);
   cout<<endl;
   cout<<"Размер очереди:"<<endl;
   cout<<queue1.size();
   cout<<endl;
   cout<<"дальний элемент:"<<endl;
   cout<<queue1.back();
   cout<<endl;
   cout<<"ближний элемент"<<endl;
   cout<<queue1.front();
   cout<<endl;
   cout<<"удаление элемента";
   queue1.pop();
   cout<<endl;
   cout<<"текущие данные";
   out(queue1);
   cout<<endl;
   cout<<"еще одно добавление элемента";
   queue1.push(n);
   out(queue1);
   cout<<endl;
   system("pause");
   return 0 ; 
}
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
08.11.2011, 11:59     класс очередь #3
вот вариант на базе связного списка, очередь(FIFO).
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
79
80
81
82
83
84
85
86
#include <iostream>
using namespace std;
 
template<class T>
class xQueue {
   struct node {
       T d;
       node* next;
   };
private:
   node*  ptr;
public:
   xQueue(void) : ptr(NULL){}
   ~xQueue() {
        this->clear();
    }
public:
   void  push(T d) {
       node* e = new node();
       e->d = d;
       if(! ptr) {
            ptr = e;
            ptr->next = ptr;
       } else {
            e->next = ptr->next;
            ptr = ptr->next = e;
       }
    }
 
    T& front(void) {
        return ptr->next->d;
    }
 
    void  pop(void) {
        if(ptr == ptr->next) {
            delete ptr;
            ptr = NULL;
            return;
        }
        node* tmp = ptr->next;
        ptr->next = tmp->next;
        delete tmp;
        tmp = NULL;
   }
 
   size_t  size(void) const {
       size_t cnt = 0u;
       const node* iter = ptr->next;
       do {
           cnt++;
           iter = iter->next;
       } while(iter != ptr->next);
     return cnt;
  }
 
   bool empty(void) const {
       return (! ptr);
   }
 
   void clear(void) {
      while(! this->empty())
          this->pop();
   }
};
 
 
int main(void) {
  xQueue<int> q;
 
  for(int i = 1; i <= 7; i++) // заполняем очередь
      q.push( i * 100 );
 
  cout << "size queue: " << q.size() << endl;  // показать размер очереди
 
  while(! q.empty()) {  // читаем очередь от первого до последнего элемента
      cout << q.front() << endl;
      q.pop();
  }
  // q.clear();
 
  if(q.empty())  // очередь у нас пустая
       cout << "queue NULL" << endl;
 
  cin.get();
  return 0;
}
Yandex
Объявления
08.11.2011, 11:59     класс очередь
Ответ Создать тему
Опции темы

Текущее время: 12:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru