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

> Внимание!

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

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


Новичок
*

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

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


Нужен очень шаблон класса "очередь" на С++, с простыми операциями, такими как вставить новый элемент в очередь, взять вершину очереди, проверка на пустоту очереди, размер очереди, вывод элементов и т.п. Может у кого есть что-нить подобное? smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
lays
сообщение 11.01.2007 23:14
Сообщение #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 - 11.01.2007 23:41
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 24.06.2025 15:40
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"