IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> шаблон класса очередь на С++, может у кого есть?
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Нужен очень шаблон класса "очередь" на С++, с простыми операциями, такими как вставить новый элемент в очередь, взять вершину очереди, проверка на пустоту очереди, размер очереди, вывод элементов и т.п. Может у кого есть что-нить подобное? smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Я тут тоже очередь пытаюсь всё сделать (некоторые вещи уже из выше написаного взял) wink.gif У volvo не беру по причине, что ещё не такого уровня, многие вещи не понимаю, поэтому пытаюсь свою.

Внизу то, что пока получилось...Только говорят, что у меня некорректная работа с памятью...смотрите мол конструктор и деструктор и думайте...
Что не так и как исправить?

#include <iostream>

#define N 20

using namespace std;

template <class T>
class queue{

private:

T q[N];
T *begin;
T *end;

public:

queue();
~queue();
void push(T);
T pop();
T showHead();
bool isEmpty();
void makeEmpty();
};

template <class T>
queue<T> :: queue(){
begin = end = q;
cout << "\n:: Initialization ok.";
}

template <class T>
queue <T> :: ~queue() {
cout << "\n:: Destroyed.";
}

template <class T>
bool queue <T> :: isEmpty(){
return (begin == end);
}

template <class T>
void queue <T> :: push(T i){
*end = i;
if(end ==(q + N-1)){
end = q;
}
else{end++;}
}

template <class T>
void queue <T> :: makeEmpty() {
begin = end = q;
cout << "\n:: Queue is cleaned.";
}

template <class T>
T queue <T> :: showHead(){
if(this->isEmpty()){
cout << "\n:: Queue is empty.";
return 0;
}
else { return (*begin);}
}

T queue <T> :: pop(){
if(this->isEmpty()){
cout << "\n:: Queue is empty.";
return 0;
}
else{
T first = this->showHead();
if (begin == q + N - 1) {
begin = q;
}
else { begin++; }
return first;
}
}

main() {

cout << "::::::: Module test ::::::::";
cout << "\n:: Creating new queue.";

queue <int> a;

cout << "\n:: Elements pushing in <int> queue...";
a.push(14);
a.push(12);
a.push(16);
a.push(17);

for (int i = 0; i < 9; i++) {
a.push(i);
}

cout << "\n:: Head - " << a.showHead() << endl;
cout << "\n:: Poped head - " << a.pop();
cout << "\n:: Head - " << a.showHead() << endl;

cout << "\n:: All elements: ";
cout << "\n:: ";
for (int i = 0; i < 12; i++) {
cout << a.pop() << " ";
}

// явный вызов деструктора
a.~queue();

// return 0
system("PAUSE");
return EXIT_SUCCESS;

}



Сообщение отредактировано: lays -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
lays   шаблон класса очередь на С++   23.12.2006 15:19
мисс_граффити   в FAQ есть это все на паскале. Ну и поиском пользу…   23.12.2006 15:35
volvo   Здесь выкладывался шаблонный class TQueue: моделир…   23.12.2006 16:47
w@rlock   С шаблонами и классами работаю первый раз. Попытал…   7.01.2007 20:43
volvo   Измени showHead вот так, и посмотри, ЧТО ты пытаеш…   7.01.2007 21:16
w@rlock   volvo Да и правда… :) Но теперь вообще запутался…К…   8.01.2007 0:14
Алена   Значит, так... Проблема - в том, что такой способ…   8.01.2007 0:59
w@rlock   Большое спасибо :) Вот эту функцию можно пояснить…   8.01.2007 23:28
volvo   Что такое: [code=cpp]T value = q[begin]; ?Запомин…   8.01.2007 23:38
lays   Алена, volvo, w@rlock здорово :) :good: правда …   8.01.2007 23:36
lays   volvo спасибо. :cool: :) но почему ++i, а не i…   9.01.2007 1:46
volvo   А для отдельно стоящего оператора это не играет ро…   9.01.2007 3:07
lays   да. но ведь в данном примере в цикле pop при ++i з…   9.01.2007 18:04
volvo   for(int i = 0; i < end; ++i) q[i] = q[i + 1];ан…   9.01.2007 18:22
w@rlock   а вот если ещё конструктор копирования написать св…   10.01.2007 21:55
w@rlock   Писал-писал этот шаблон, а так и не сдал :( Сказал…   11.01.2007 18:57
volvo   Ссылка на то, как правильно - в третьем сообщении …   11.01.2007 19:01
w@rlock   он у меня не компилится просто...:( тем более как …   11.01.2007 19:15
lays   Я тут тоже очередь пытаюсь всё сделать (некоторые …   12.01.2007 3:14
volvo   Не знаю, что там может НЕ компилиться... Вот выдра…   12.01.2007 6:11
Bokul   Извиняюсь за оффтоп: Где его можно скачать? Он к…   12.01.2007 6:27
volvo   Компилит, причем ТОЛЬКО под ДОС... Качать здесь: h…   12.01.2007 6:44


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 4.05.2024 1:08
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name