Помощь - Поиск - Пользователи - Календарь
Полная версия: Stack > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
Tur
dribble.gif Помогите! Не могу найти ошибку
Что-то с добавлением элементов,т.к. при выводе выводится только последний(повторяется взависимости от кол-ва введенных эл-тов)
Вот код

#include <iostream>
#include <conio.h>
using namespace std;
struct stack
{
int *dat;
stack *prev;
}*top;
stack *push (stack *to,int *data)
{
stack *uk=new stack;
uk->prev = to;
uk->dat = data;
return uk;
};
stack *pop(stack *to)
{int *inf;

inf=to->dat;
cout<<*inf;
stack *uk=to;
to = to->prev;
delete uk;
return to;
};
void *print(stack *to)
{
int *d;
stack *uk=to;
while (uk!=NULL)
{
d=uk->dat;
uk=uk->prev;
cout<<*d<<endl;
}
return d;
};

int main ()
{
int k;
int a;
int q;
top=NULL;
t:cout<<"Vvedite: 1-add;2-del;3-print"<<endl;cin>>k;
switch(k)
{
case 1:{
cout<<"Vvedite element"<<endl;
cin>>a;
top=push(top,&a);};break;
case 2:if (top==NULL) {cout<<"Stek pust"<<endl;getch();break;}
else top=pop(top);break;
case 3:if (top==NULL) {cout<<"Stek pust"<<endl;getch();break;} else print(top);
break;
}
cout<<"Prodolgim"<<endl;cin>>q;
if (q==2) goto t;
return 0;
}
Vago
Вообще-то, в информационной части элемента стека (элемента списка, узла дерева,..) принято хранить данные. Сами данные, а не адрес буфера ввода.
Tur
Спасибо за помощь! Попробую!
Vago
Удачи! Надеюсь, поняли, что сейчас у Вас uk->dat всех элементов стека указывают в одно место. На a. Ввели новое a и сразу потеряли предыдущее, потому что на стек его-то на самом деле не помещали...

Ещё по мелочам - пользователю непонятно, что вводить, чтобы продолжить, а что - чтобы закончить. Ну и этот goto... "Поручик!.. При дамах!.. Как можно?!.." wink.gif Есть же цикл do ... while ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.