W
Whatka
Найти колличество элементов стека с одинаковыми "соседями"
Вот моё решение ошибок не выдаёт,но ответ не верный(всегда 0):
Вот моё решение ошибок не выдаёт,но ответ не верный(всегда 0):
C++:
#include <iostream>
using namespace std;
class Stack
{
struct stack
{
int elem;
stack *p;
};
stack *head;
public:
Stack(){head=NULL;} //Конструктор
~Stack() //Деструктор
{
stack *New;
New=head;
while(head)
{
New=head;
head=head->p;
delete New;
}
}
void push(int a) //Добавить в начало стека передаваемое число
{
stack *New;
New=new stack;
New->p=head;
New->elem=a;
head=New;
}
int pop() //Извлечь из начала стека (с удалением)
{
int back;
stack *New;
New=head;
head=head->p;
back=head->elem;
delete New;
return back;
}
bool is_empty() //Проверка пуст ли стек
{
bool a=false;
if (head==NULL)
a=true;
return a;
}
void print () //Печать содержимого стека
{
stack *New;
New=head;
while(New)
{
cout<<New->elem<<endl;
New=New->p;
}
}
};
void main()
{
setlocale(LC_ALL,"RUS");
Stack w;
int n,a,in,s(0);
metka:
cout<<"Количество элементов стека:";
cin>>n;
if(n<=2)
{
system ("cls");
cout<<"Не корректное значение!\n";
goto metka;
}
cout<<"Введите интервал заполнения:";
cin>>in;
cout<<"Стек после заполнения случайными числами:\n";
for(int i(0);i<n;i++)
{
a=rand()%in;
w.push(a);
}
w.print();
int e1,e2,e3;
e1=w.pop();
e2=w.pop();
while(w.is_empty()!=NULL)
{
e3=w.pop();
if(e1==e3)
s++;
e1=e2;
e2=e3;
}
cout<<"Количество чисел стека с одинаковыми соседями:"<<s<<endl;
}