Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2010, 20:48   #1
Aleksa_ks
 
Регистрация: 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;
}
Aleksa_ks вне форума Ответить с цитированием
Старый 10.05.2010, 22:00   #2
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

тема больше не актуальна .
Namolem вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа выдает ошибку при работе 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