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

Стек (связный список). Нужно ли проверять на пустоту? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ сделать функцию, которая вычисляет сумму всех нечетных значений переданного ей массива http://www.cyberforum.ru/cpp-beginners/thread785347.html
сделать функцию, которая вычисляет сумму всех нечетных значений переданного ей массива функция рекурсивная
C++ заданы 2 строки, состоящие из слов, разделенных пробелами заданы 2 строки, состоящие из слов, разделенных пробелами. Если последнее слово больше предпоследнего , то заменить первые пять буквой "а", в противном случае все символы заменить на "*". http://www.cyberforum.ru/cpp-beginners/thread785337.html
C++ Процедуры и функции: Найти натуральное число из интервала [n1, n2] с максимальной суммой делителей
Найти натуральное число из интервала с максимальной суммой делителей. Для нахождения суммы делителей написать функцию. Выдает ошибку. В чем проблема? int delit(int a,int b) { int sum=0; int summax=1; int ch=1,i; for ( i=a;i<b;i++)
C++ Программа падает при чтении из файлов
В C++ слова читаются из двух файлов.выбивает ошибку.Что можно сделать?
C++ Программа просит ввести число и умножить его на два, затем произведение умножить на два и т.д. http://www.cyberforum.ru/cpp-beginners/thread785324.html
3.Программа просит ввести число и умножить его на два, затем произведение умножить на два и т.д. выполнять эти операции пока произведение меньше 200.
C++ Среди двузначных чисел найти те, сумма квадратов цифр которых делится на 13 2.Среди двузначных чисел найти те, сумма квадратов цифр которых делится на 13. подробнее

Показать сообщение отдельно
victor72
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 10

Стек (связный список). Нужно ли проверять на пустоту? - C++

13.02.2013, 12:00. Просмотров 596. Ответов 1
Метки (Все метки)

Всем добра,
у меня к Вам есть парочка вопросов о стеке, буду благодарен за помощь.
Передо мной стояла задача:
1) Инициализировать стек;
2) Заполнить его значениями;
3) Добавить одно значение, через консоль;
4) Удалить значение, которое добавили.
Вот мой код, он рабочий.
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
#include "stdafx.h"
 
struct STACK
{
    float Value;
    STACK *Link;
};
 
 struct Using_Stack
 {
    STACK *New_Var;
    void (*Init)(Using_Stack*);
    void (*Push)(Using_Stack*, float );
    float (*Pop)(Using_Stack*);
 };
 
/* INITIALIZATION */
void MyInit( Using_Stack* MyStack )
{
    MyStack->New_Var = 0;
}
 
/* PUSH */
void MyPush( Using_Stack* MyStack, float Value )
{
    STACK *New_El;
 
    New_El = new STACK;
    New_El -> Value = Value;
    New_El -> Link = MyStack -> New_Var;
    MyStack -> New_Var = New_El;
}
 
/* POP */
float MyPop( Using_Stack* MyStack )
{
    float Reading;
    if (MyStack -> New_Var == 0)
            Reading = 0;
    else
        {
            STACK *Del;
            Del = MyStack -> New_Var;
            Reading = Del -> Value;
            MyStack -> New_Var = MyStack -> New_Var -> Link;
            delete Del;
        }
    return Reading;
}
 
void main()
{
    Using_Stack *MyStack;
    MyStack = new Using_Stack;
 
    MyStack -> Init = MyInit;
    MyStack -> Push = MyPush;
    MyStack -> Pop = MyPop;
 
    MyStack -> Init(MyStack);   //Initialization of Value
 
    float Character;
 
    MyStack -> Push(MyStack, 10.5);     //Recording of Value
    MyStack -> Push(MyStack, 20.5);
 
    printf("Our Stack is");
    printf("\n\n%g", MyStack -> New_Var -> Value);
    printf("\n\n%g", MyStack -> New_Var -> Link -> Value);
    
    printf("\n\n Enter the value you want to ADD \n");
    scanf_s("%g", &Character);
    MyStack -> Push (MyStack, Character);
 
    printf("\n\n So, our Stack is");
    printf("\n\n %g", MyStack -> New_Var -> Value);
    printf("\n %g", MyStack -> New_Var -> Link -> Value);
    printf("\n %g \n", MyStack -> New_Var -> Link -> Link -> Value);
 
    printf ("\n And now we will DELETE value, which we added \n");
    float Read;
    Read = MyStack -> Pop(MyStack);     //Reading of one value
    
    printf("\n Value which we will DELETE is - ");
    printf("%g \n", Read);
 
    printf("\n And now, our Stack is");
    printf("\n\n %g", MyStack -> New_Var -> Value);
    printf("\n %g \n\n\n", MyStack -> New_Var -> Link -> Value);
    
}
Вот, собственно, мой вопрос: нужно ли проверять стек на пустоту и как это реализовать, если нужно?
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru