|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.05.2010, 20:48 | #1 |
Регистрация: 20.10.2009
Сообщений: 7
|
стек в С++, программа выдает ошибки
Вот код программы, составляла не я. Проверяю - выдает ошибки (ошибки в основном с циклами). Помогите пожалуйста исправить, очень нужно.
#include <iostream> #include <cstdlib> using namespace std; class Node{ public: Node *prev; int d; Node(int dat) {d = dat; prev = 0;} }; class stack{ Node *plast; int maxsize; int size; public: Node *getPointer(){ return plast; } stack(int s){ plast = new Node(s); size = 1; maxsize = 0; } stack(){ plast = 0; size = 0; maxsize = 0; } ~stack(){ while (plast!=NULL) { Node* node = plast; plast = node->prev; delete node; } } void push(int n){ if (size < maxsize || !maxsize){ Node *pv = new Node(n); if (plast == 0) plast = pv; else{ pv->prev = plast; plast = pv; } size++; } } int pop(){ if (plast){ int ret = plast->d; plast = plast->prev; size--; return ret; } else return 0; } void setMaxsize(int msize){ if (maxsize>=0){ maxsize = msize; if (maxsize<size){ while (size>maxsize){ pop(); } } } } bool findByVal(int val){ Node *pv = plast; while (pv->d != val && pv != NULL) pv = pv->prev; if (pv->d == val){ del(val); return true; } return false; } int findByNum(int num){ if (num<=size && num){ Node *pv = plast; for (int i=size;i!=num;i--){ pv = pv->prev; } return pv->d; } } bool del(int val){ Node *pv = plast; if (pv != NULL){ if (pv->d == val){ plast = pv->prev; size--; return true; } while ( (pv->prev->d != val) && pv->prev){ pv = pv->prev; } if (pv->prev){ pv->prev = pv->prev->prev; size--; return true; } return false; } return false; } }; void print_stack(stack *s){ Node *pv = s->getPointer(); cout <<"\nstack: "; while (pv){ cout <<pv->d<<' '; pv = pv->prev; } cout <<endl; } int main(){ system("chcp 1251"); cout <<"Создание пустого стека..."; stack *p = new stack; print_stack(p); cout <<"Заполнение его..."; for (int i=0;i<10;i++){ p->push(i); } print_stack(p); cout <<"Извлечение трех значений...\n"; for (int i=0;i<3;i++){ cout <<p->pop()<<' '; } print_stack(p); cout <<"Поиск элемента с значением 3: "; if (p->findByVal(3)) cout <<"Найдено и извлечено.."; else cout <<"Не найдено.."; print_stack(p); p->setMaxsize(3); cout <<"Установка максимального размера стека: 3.."; print_stack(p); system("pause"); delete p; return 0; } |
10.05.2010, 22:00 | #2 |
Oo
Форумчанин
Регистрация: 10.10.2009
Сообщений: 350
|
тема больше не актуальна .
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа выдает ошибку при работе | T-dayne | Помощь студентам | 15 | 27.02.2010 10:31 |
Скомпилированая программа на одних компах запускается, а на других выдает ошибку? | Velross | Помощь студентам | 1 | 14.01.2010 21:05 |
Программа выдает ошибку на нуле | Panika | Помощь студентам | 1 | 11.11.2009 21:42 |
программа на С++.помогите исправить ошибки | Юлияw52 | Помощь студентам | 4 | 16.09.2009 22:25 |
Немогу понять,почему Microsoft Visual Studio 2005 (C++) выдает ошибки? | FanEurovision | Visual C++ | 3 | 18.05.2009 20:06 |