Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 10

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

13.02.2013, 12:00. Показов 2596. Ответов 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);
    
}
Вот, собственно, мой вопрос: нужно ли проверять стек на пустоту и как это реализовать, если нужно?
Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.02.2013, 12:00
Ответы с готовыми решениями:

Стек через связный список
Здравствуйте мне нужно переделать стек через указатели и связный список. #include <iostream> #include <locale.h> using...

Стек, связный список и глупый вопрос
Содержание stack.h #include <cstddef> // Определение константы NULL template <typename T> class Stack { public: Stack(); ...

Сформировать связный список (стек), содержащий последовательность целых чисел
Сформировать связный список (стек), содержащий последовательность целых чисел, вводимых из файла. Удалить из списка все нули. Язык С. ...

1
Эксперт по пяченькам
 Аватар для StasGamilton
67 / 67 / 12
Регистрация: 16.08.2011
Сообщений: 249
13.02.2013, 13:06
Цитата Сообщение от victor72 Посмотреть сообщение
MyStack->New_Var = 0;
Указатели лучше приравнивать к NULL.
Цитата Сообщение от victor72 Посмотреть сообщение
нужно ли проверять стек на пустоту и как это реализовать, если нужно?
Проверять на пустоту надо. А то заберешь все данные и еще захочешь забрать. Проверить можно на основе указателя, если он NULL, тогда стек пуст.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2013, 13:06
Помогаю со студенческими работами здесь

Связный список (Используя структуру описания даты, построить связный список студентов, сформированный в алфавитном порядке)
Здраствуйте! Помогите пожалуйста найти косяк. Выводится только первая строчка из списка студентов. Вот такая задачка : Программа...

Связный список. Необходимо создать новый связный список только из положительных элементов
Задача: Прочитать из файла связный список. Потом из этого списка создать еще один, в котором будут только положительные значения из...

Как проверить на пустоту строку в Excel и если она пустая проверять следующие?
написал программу, она берет данные из excel и вставляет структурированно в другой. Информация храниться с пропуском одной строки, но...

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости.
Друзья помогите с реализацией списка. Нужно запрограммировать связный список, в котором информация о книгах сортируется по убыванию...

Связный список: вставить в список перед каждым вхождением элемента K элемент L
Разработать программу, которая создает список, элементами которого являются целые числа. Вставляет в список перед каждым вхождением...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru