|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Класс стек и очередь на с++ |
|
C/C++ - Класс стек и очередь на с++
|
Новый участник Сообщения: 2 |
Профиль | Отправить PM | Цитировать Помогите, пожалуйста в написании программы на с++, в которой надо написать класс стек с следующимий возможностями: добавить элемент в конец стека; извлечь последний элемент стека ; проверка на то,что стек не пустой! Заранее спасибо!
|
|
Отправлено: 19:55, 19-10-2009 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Помогите пожалуйста написать класс стек на с++, реализующий следующие возможности: добавить элемент в конец стека, извлечь последний элемент стека, проверка на то ,что стек не пуст.
|
Отправлено: 20:13, 19-10-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
ИО Капитана Очевидности Сообщения: 5387
|
Профиль | Отправить PM | Цитировать Контрольная в школе?
class cStack { struct sItem // структура элемента { int Value; // значение sItem *Prev; // указатель на предыдущий элемент } sItem *fItem; // рабочее поле } Метод Push создаёт в куче новый объект для указателя fItem, адрес старого объекта помещается в поле Prev. Метот Pop извлекает из поля Prev адрес предыдущего объекта и удаляет текущий. Метод IsEmpty проверяет, не равен ли указатель fItem нулевому адресу |
------- Отправлено: 07:17, 20-10-2009 | #3 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать El Scorpio, спасибо, не очень помогло, по крайней мере мне Пока разбиралась написала нечто следующее:
class AStack { public: struct sItem { string Value; sItem *Prev; }; sItem *fItem; // konstruktor AStack() { fItem = new sItem; fItem = NULL; } // destruktor ~AStack() {}; // dobavlenie void Push(string v) { sItem *tmp = new sItem; tmp->Value = v; if(!fItem) fItem = tmp; else { tmp->Prev = fItem; fItem = tmp; } } // udalenie AStack Pop() { sItem *s = new sItem; if (fItem == NULL) {cout<<"Error: stek pust" << endl;} else { cout << fItem->Value.c_str() << endl; fItem = fItem->Prev; } AStack P; P.fItem = fItem; return P; }; } Функцию определения пустоты стека не писала - в задании такого не было (в моем) |
Отправлено: 22:35, 27-12-2009 | #4 |
ИО Капитана Очевидности Сообщения: 5387
|
Профиль | Отправить PM | Цитировать |
|
------- Отправлено: 02:32, 28-12-2009 | #5 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Я бы сделал через вектор (потом бы долго спорил с преподом что использовать свободную память в задании не было):
00 <-- Указатель на начало bptr (begin) 01 02 <- при извлечении смещаем обратно 03 <-- Указатель на конец gptr (get) 04 <- при запоминании смещаем вперёд 05 06 <-- Конец памяти (максимальная длина стека) eptr (end)
Тов. программисты форума, у меня в браузере глючит перенос строчки, когда заполнишь окошко ввода ответа (удаляет перенос строки или проворачивает прокрутку обратно), IE8 |
Отправлено: 09:19, 28-12-2009 | #6 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Специализированный деструктор я не писала, а увиденное вами - привычка обозначать что таковой имеется! С указателем ошиблась - в конечной версии программы такого бага нет. Там необходимо обнулять указатель на следующий элемент.
PS: если мое конструктивное не подходит под мерки функциональной программы предлагаю вам написать свою, а не цитировать всем известный учебник |
Отправлено: 14:56, 29-12-2009 | #7 |
ИО Капитана Очевидности Сообщения: 5387
|
Профиль | Отправить PM | Цитировать Nikilania, повторяю мысль - объект, в тексте которого содержится много new и ни одного delete выглядит странно
Хотя бы деструктор должен иметь код удаления объектов Кроме того, delete должно вызываться и при вызове Pop |
------- Отправлено: 07:41, 30-12-2009 | #8 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Nikilania, я так понимаю про учебник - это в мой огород камень, по этому поводу хочу пояснить:
Вообще есть такие варианты реализации контейнеров:
|
Отправлено: 07:54, 30-12-2009 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Теория - Стек, заданный списком, на Паскале. | ManHack | Программирование и базы данных | 9 | 07-04-2009 23:48 | |
Стек драйверов как узнать? | Ursus Spelaeus | Программирование в *nix | 1 | 05-08-2008 19:03 | |
Очередь печати | Mix Shumaher | Microsoft Windows NT/2000/2003 | 3 | 13-03-2006 23:06 | |
очередь печати | andyzu | Microsoft Windows 95/98/Me (архив) | 3 | 05-01-2004 09:44 | |
Стек коммутаторов Allied Telesyn 8324 6 шт. | Animal | Сетевые технологии | 2 | 21-02-2003 15:06 |
|