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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 17:28   #1
killeraleksana
 
Регистрация: 14.12.2011
Сообщений: 9
По умолчанию работа со стеком С++

Дана последовательность целых чисел. Поменять местами максимальный элемент и первый с помощью стека.
Задача поставила в тупик...
Вот,что сумела сделать,но максимальный элемент просто заменяется на случайное число,а с первым ничего не происходит...Пожалуйста,народ,кто-нибудь посмотрите мой код и укажите на ошибки.


Код:
#include <iostream>
using namespace std;
struct tstack
{ int inf;
tstack *next;};

void push(tstack *&s, int item)//äîáàâëåíèå ýë-òà 
{ tstack *r=new tstack;
 r->inf=item;
 r->next=s;
 s=r;}
 
void pop(tstack *&s, int &i) //÷òåíèå ýë-òà
{tstack *tmp;
tmp=s;
 i=s->inf;
s=s->next;
delete tmp;
}
int perviy(tstack *&s)//èçâëå÷åíèå ïåðâîãî ýë-òà
{tstack *r=s;
int j=r->inf;
s=r->next;
delete r;
return j;}


int main() {
 tstack *s,*d;
 int b,c,r=0,j;
 cout<<"vvedite kolvo chisel"<<endl;
 int n;
 cin>>n;
 cout<<"vvedite chisla"<<endl;
 cin>>b;
 c=b;
 for (int i=0; i<n-1; i++)//çàïèñûâàåì ýë-òû â ñòåê
 {push (s, b);
 cin>>b;} 
 push (s, b); // äîáàâëÿåì ýëåìåíòû
 for (int i=0; i<n; i++)
 { pop(s,r);
 if (r>c) c=r;
 push(d,r);}
  cout<<"ishodhiy steck"<<endl;
 for (int i=0; i<n; i++)
 {pop(d,r);
 cout<<r<<" ";
 push(s,r);} 
 cout<<endl;
 
 
 
 for (int i=0; i<n; i++)
 {pop(s,r);
 if (r==c)
 perviy(s);
  push(d,j); 
else push(d,r); 
 }
 
 cout<<"poluchenniy steck"<<endl;
 for (int i=0; i<n; i++)
 {pop (d,r);
 cout<<r<<"\t";
 }
 cin.get();
 cin.get();
 return 0;
}

Последний раз редактировалось ACE Valery; 03.06.2012 в 22:36. Причина: забыла код добавить
killeraleksana вне форума Ответить с цитированием
Старый 03.06.2012, 22:16   #2
killeraleksana
 
Регистрация: 14.12.2011
Сообщений: 9
По умолчанию

ЭЭээээх,ребята-девчата. Пока вас дождешься. Вот правильный код. Может кому-то пригодится...


Код:
#include <iostream>
using namespace std;
struct tstack
{ int inf;
tstack *next;};

void push(tstack *&s, int item)
{ tstack *r=new tstack;
 r->inf=item;
 r->next=s;
 s=r;}
 
void pop(tstack *&s, int &i) 
{tstack *tmp;
tmp=s;
 i=s->inf;
s=s->next;
delete tmp;
}

int main() {
 tstack *s=NULL,*d=NULL,*a=NULL;
 int b,c=0,r=0,x,n;
 cout<<"vvedite kolvo chisel"<<endl;
 cin>>n;
 cout<<"vvedite chisla"<<endl;
 cin>>b;
 c=b;
 for (int i=0; i<n-1; i++)
 {push (s, b);
 cin>>b;}
 push(s,b); 
 
 for (int i=0; i<n; i++)
 {x=0;
 pop(s,r);
 if (r>c) 
 {c=r;
 push(d,r);
 a=d;
 x=1; }
if(x==0)push(d,r);}
x=d->inf; 
for (int i=0; i<n; i++)
 {pop(d,r);
 cout<<r<<" ";
 push(s,r);
 }//
 cout<<endl;
 for (int i=0; i<n; i++)
 { pop(s,r); push(d,r); }
 d->inf=(*a).inf;
 (*a).inf=x;
 for (int i=0; i<n; i++)
 {pop(d,r);
cout<<r<<" ";
 }
 cin.get();
 cin.get();
 return 0;
}

Последний раз редактировалось ACE Valery; 03.06.2012 в 22:36.
killeraleksana вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со стеком ksu04061992 Помощь студентам 0 28.05.2012 01:37
Работа со стеком YTP0 Паскаль, Turbo Pascal, PascalABC.NET 0 06.04.2011 17:40
Работа со стеком 0479 Общие вопросы по Java, Java SE, Kotlin 2 27.02.2011 21:38
Работа со стеком KBAC Помощь студентам 0 26.12.2010 12:54
Работа со стеком,С++ Singularity Помощь студентам 0 04.05.2010 19:31