Нужно разобраться со стеком

  • Автор темы GladiatoR24
  • Дата начала
G

GladiatoR24

#1
Доброго времени суток... Помогите, пожалуйста, разобраться со стеком.

Задание следующие : "написать программу для перестановки элементов стека x(1),x(2),x(3),...x(n)=>x(2),x(3),...x(n),x(1). Элементы пронумерованы в порядке их введения в стек." Нужна программа под dos, без доп. библиотек.

Приведу пример программы работы со стеком. В программе вводится стек из н эллементов, и выводится на экран...

Код:
#include <iostream.h>

struct node
{
float num;
node* next;
};

//prototip
node* push(node* , float);
void printstack(node* );
node* pop(node*);

void main()
{
float what;
int n,i;
node* top=0;
cout<<"input n\n";
cin>>n;
cout<<endl;

//input in stek
cout<<"input what"<< n<<"value\n";
for (i=1;i<=n;i++)
{
cin>>what;
top= push(top, what);
}

//print stek
printstack(top);
int k=0;

//output from stek
while(top)
{
if (top->num >0)
k++;
top= pop(top);
}
cout<<"k="<< k<<"\n";
}

node* push(node* top, float what)
{
node* pv=new node;
pv->num=what;
pv->next=top;
return pv;
}

void printstack(node* top)
{
float what;

cout<<"stek:\n";
while (top)
{
cout<<top->num<<" ";
top=top->next;

}
cout<<endl;
}

node* pop(node* top)
{
node* pv=top->next;
delete top;
return pv;
}
Помогите, кто чем может, очень нужна эта программа!!!
 
E

eReS

#2
Тебе на Си надо или С++? Так как для С++ сдесь можно контейнеры использовать :newconfus: програма станет в 5 раз короче, а для Си - то уже как у тебя
Код:
struct node
{
float num;
node* next;
};
А потом написать несколь функций для работы с стеком: добавить елемент, извлечь елемент
 
G

GladiatoR24

#3
Мне на С++ нужно, именно со стеком... Вся загвоздка в переносе элемента с последней позиции в первую...