TElem* Decide (TElem **PSt1, TElem *St2){
TElem *St1= *PSt1, *Dop=NULL, *DopDop=NULL;
St2 = FreeStack(St2);
int k=0, g=NULL;
while (St1){
if (strcmp(St1->Info.Symbol,"0")==0 || atoi(St1->Info.Symbol)!=NULL){
if (!k) {
TopToTop(&St1, &DopDop);;
k++;
g=atoi(St1->Info.Symbol);
}
if (atoi(St1->Info.Symbol)!=g){
if (k<2) {
St2=PushStack(St2, DopDop->Info);
PopStack(&DopDop);
k=0;
TopToTop(&St1, &Dop);
}
else{
k=0;
TopToTop(&St1, &Dop); }
}
else {k++; TopToTop(&St1, &Dop);}
}
else {TopToTop(&St1, &Dop);}
}
while(Dop) TopToTop(&Dop, &St1);
*PSt1 = St1; // новый адрес через параметр (изменение по адресу)
return St2;// новый адрес через результат функции вернется
}