![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Tur |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 2 Регистрация: 11.10.2009 Город: Великие Луки Вы: студент ![]() |
(IMG:style_emoticons/default/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 |
![]()
Сообщение
#2
|
Школьник ![]() Группа: Продвинутые Сообщений: 26 Регистрация: 12.9.2009 Город: dp ![]() |
Вообще-то, в информационной части элемента стека (элемента списка, узла дерева,..) принято хранить данные. Сами данные, а не адрес буфера ввода.
|
Tur |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 2 Регистрация: 11.10.2009 Город: Великие Луки Вы: студент ![]() |
Спасибо за помощь! Попробую!
|
Vago |
![]()
Сообщение
#4
|
Школьник ![]() Группа: Продвинутые Сообщений: 26 Регистрация: 12.9.2009 Город: dp ![]() |
Удачи! Надеюсь, поняли, что сейчас у Вас uk->dat всех элементов стека указывают в одно место. На a. Ввели новое a и сразу потеряли предыдущее, потому что на стек его-то на самом деле не помещали...
Ещё по мелочам - пользователю непонятно, что вводить, чтобы продолжить, а что - чтобы закончить. Ну и этот goto... "Поручик!.. При дамах!.. Как можно?!.." (IMG:style_emoticons/default/wink.gif) Есть же цикл do ... while ... |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 23:32 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru