Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Prigor
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
#1

Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный - C++

23.11.2011, 23:26. Просмотров 452. Ответов 8
Метки нет (Все метки)

Вот собственно сам код, подскажите если что не так. Заранее спасибо!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#include <iostream>
#include <stack>
using namespace std;
 
 
class Node 
{
public:
    int number;
    Node* last;
};
 
Node* ptrLast = NULL;
Node* top = NULL;
 
void push ()  //добавление в стек
{
            system("cls");
            int numb = -1;          
            cout<<"Введите Число: "; cin>>numb;
            Node* ptr = new Node;
            ptr->number = numb;         
            if (top == NULL)
            {
                ptr->last = NULL;
                top = ptr;
                ptrLast = ptr;
                system("cls");
            //  continue;
            }
            top = ptr;
            ptr->last = ptrLast;
            ptrLast = ptr;
            system("cls");
            //continue;
}
 
void pop () //удаление из стека
{
            system("cls");
            Node* ptrDelete = NULL;
            if (top == NULL)
            {
                cout<<"\t!!! СТЕК ПУСТ !!!\n\n";
                system("pause");
                system("cls");
                //continue;
            }   
            else
            {
            ptrDelete = top;
            if (ptrDelete->last == NULL)
            {
                top = NULL;
                delete ptrDelete;
                system("cls");
                //continue;
            }
            top = ptrDelete->last;
            ptrLast = top;
            delete ptrDelete;
            //continue;
            }
}
 
void versh () //просмотр вершины
{
            system("cls");
            if (top == NULL)
            {
                cout<<"\t!!! СТЕК ПУСТ !!!\n\n";
                system("pause");
                system("cls");
                //continue;
            }
            else
            {
            cout<<"Вершина Стека: ";
            cout<<top->number<<"\n\n";
            system("pause");
            system("cls");
            //continue;
            }
}
 
void soderzh () //содержимое стека
{
            system("CLS");
            Node* ptr = NULL;
            if (top == NULL)
            {
                cout<<"\t!!! СТЕК ПУСТ !!!\n\n";
                system("PAUSE");
                system("CLS");
                //continue;
            }
            cout<<"* * * * * СОДЕРЖИМОЕ СТЕКА * * * * *\n\n";
            ptr = top;
            while (1)
            {
                cout<<ptr->number<<endl;
                if (ptr->last == NULL)
                {
                    system("PAUSE");
                    system("CLS");
                    break;
                }
                else
                {
                ptr = ptr->last;
                break;
                }
            }
}
 
 
int main ()
{
    setlocale (0, "");
    int vyb;
    while (1)
    {
    cout<<"\n1. Добавить в Стек\n2. Вытолкнуть Из Стека\n3. Вершина Стека\n4. Содержимое Стека\n0. Выход\n\n"; cin>>vyb;
    cout<<"Ваш выбор: "<<vyb;
 
    switch (vyb)
    {
    case 0:
        {
        return 0;
        }break;
    case 1:
        {
            push ();
            soderzh ();
            system ("pause");
            system("cls");
        }break;
    case 2:
        {
            pop ();
            soderzh ();
            system ("pause");
            system("cls");
        }break;
    case 3:
        {
            versh ();
            system ("pause");
            system("cls");
        }break;
    case 4:
        {
 
            soderzh ();
            system ("pause");
            //system("cls");
        }break;
 
    }
    }
 
 
    system ("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 23:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный (C++):

Ошибка при выводе 1-го элемента массива, но правильно выводит последний - C++
Помогите пожалуйста найти ошибку (почему не выводит переменную а?): #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

Бинарное дерево выводит только последний узел - C++
дерево выводит только последний узел а не все #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; struct Node //звено {...

При выводе массива, выводит мусор - C++
Програмка генератор паролей! #include&lt;iostream&gt; #include&lt;time.h&gt; #include&lt;conio.h&gt; using namespace std; void...

При добавлении студента, сбивается вся структура, и при выводе всего списка студентов, выводит какой то мусор - C++
Суть действий: При добавлении студента, сбивается вся структура, и при выводе всего списка студентов, выводит какой то мусор. Раньше я...

Почему при выполнении выводит и считает только последний номер потока? - C#
Добрый день Объясните пожалуйста Вот код, должен посчитать сумму байт текста Создаю потоки в Main, передаю параметры в func...

Программу написал, но выводит только одно значение - Turbo Pascal
В матрице А (mxn) элементы главной диагонали расположить в порядке возрастания их абсолютных величин. Program zadacha; Uses crt; ...

8
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
24.11.2011, 09:04 #2
Prigor, в этом разделе про стэк уйма тем, может быть стоит воспользоваться поиском.
0
Prigor
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
24.11.2011, 13:49  [ТС] #3
понимаю, но думал что люди помогут здесь
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.11.2011, 18:04 #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int pop (node_t ** stack, type ** buf)
{
        node_t * n = *stack;
        if ( ! n )
           return -1;
        
        *buf = (type *) malloc (sizeof (type) );
        **buf = n->el; 
        *stack = n->next;
        free(n);
        
        return 0;
}
0
Prigor
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
29.11.2011, 21:27  [ТС] #5
посмотрите по моей проге что не так. Потому что , когда реализовывал через switch() , то вывод работал
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.11.2011, 21:30 #6
Prigor, а что смотреть, как выйти из вашего бесконечного цикла
0
Prigor
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
29.11.2011, 21:33  [ТС] #7
да даже если убрать его, он выводит последний элемент который добавил в стек, а реализации switch'ом всё идеально, выводил все эл-ты
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.11.2011, 21:38 #8
Prigor, цикл создать не пробовали?
C
1
2
3
4
5
6
7
8
9
while (stack)
    {
        pop (&stack,&c);
        
        printf ("\n%d", *c);
        free (c);
        
 
    }
0
Prigor
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
29.11.2011, 21:42  [ТС] #9
смысл в том, что я реализую на основе списков односвязных
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 21:42
Привет! Вот еще темы с ответами:

Oracle Как получить последний добавленный id ? - C#
Здравствуйте, подскажите пожалуйста как получить последний добавленный индекс из базы данных? sql мне известна select...

Написал прогу, создал Release конфигурацию. Какие оттуда файлы нужны, чтоб передать прогу заказчику - C#
там их 6 штук вышло. понимаю для чего myapp.exe -собственно сам exe myapp.exe.xml - там конфигурационные параметры. А ДЛЯ ЧЕГО...

Прокрутка ListBox на последний добавленный элемент - C#
В общем, в программе у меня есть большое количество команд LogList.Items.Add(&quot;Выполнено&quot;); И окошло ListBox(LogList) в которое помещаются...

Точки при выводе содержимого каталога - C (СИ)
Здравствуйте, уважаемые форумчане. Моя проблема заключается в том, что при выводе содержимого каталога, выводятся так же непонятные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
29.11.2011, 21:42
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru