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

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

Войти
Регистрация
Восстановить пароль
 
Пацан_
2 / 2 / 1
Регистрация: 22.05.2013
Сообщений: 39
#1

Создание стека по примеру из учебника Лафоре. Что означает top = -1? - C++

06.07.2014, 13:51. Просмотров 385. Ответов 2
Метки нет (Все метки)

Здравствуйте, помоги разобраться. Это пример из учебника Лафоре ООП С++. Не могу понять почему когда в конструкторе Stack() {top = -1} все работает нормально, а когда top = 0, то работает не корректно. Конкретно интересует что означает top = -1, это что индекс массива который начинается со значения которое меньше 0 и как оно связано с количеством элементов в массиве MAX = 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
// stakaray.cpp
// a stack as a class
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////
class Stack
   {
   private:
      enum { MAX = 4 };      //(non-standard syntax)
      int st[MAX];               //stack: array of integers
      int top;                     //number of top of stack
   public:
      Stack()                     //constructor
         { top = -1; }
      void push(int var)        //put number on stack
         { st[++top] = var; }
      int pop()                    //take number off stack
         { return st[top--]; }
   };
int main()
   {
   Stack s1;
 
   s1.push(11);
   s1.push(22);
   s1.push(33);
   s1.push(44);
   cout << "1: " << s1.pop() << endl;  
   cout << "2: " << s1.pop() << endl;  
   cout << "3: " << s1.pop() << endl;  
   cout << "4: " << s1.pop() << endl;  
   return 0;
   }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2014, 13:51     Создание стека по примеру из учебника Лафоре. Что означает top = -1?
Посмотрите здесь:

Литература: что читать после Лафоре? - C++
Посоветуйте что читать дальше после того как прочёл книгу &quot;Объектно-ориентированное программирование в С++&quot; Р. Лафоре

Подскажите, что изучать после Лафоре и Шилдта? - C++
Всем привет! Вот изучаю C++ уже год, прочитал полностью книжку Лафоре и Шилдта! Основы вроде бы знаю уже, вот интересует вопрос что учить...

Задание из книги Р.Лафоре. Что автор имел ввиду? - C++
Здравствуйте! Добрался до 7-й главы книги Лафоре и мне непонятно что имел ввиду автор. Хотя, возможно это переводчик так перевел... ...

Что лучше читать Программирование: принципы и практика - Страуструпа или ООП в С++ - Лафоре - C++
Вот хочу научиться программировать, пошел я в библиотеку и взял две книги по программированию на С++(кроме них не фига не было по С++) ...

создание стека - C++
Люди помогите не могу создать стек проблема в том что нельзя использовать классы и сижу как дурак в коде нужно только создание ввод и...

Создание стека структур - C++
Как мне объявить стек структур с помощью &lt;stack&gt; ? Я создал структуру и хотел сделать стек таких структур, но почему-то у меня не...

Что означает %1? - C++
Здравствуйте, вопрос собственно в заголовке, при выводе информации на экран порой используют запись вида &quot;text %1.\n&quot; \n - это как я...

Несмотря на то, что переменная С имеет тип long int, возведение, к примеру, 100 в степень 5 совершается неверн - C++
Ребят, раньше программировал ( на уровне любителя ) только на скриптовых языках с динамической типизацией (в основном JS и Python), но так...

Создание стека и проверка на палиндром - C++
Вроде как правильные функции создание и извлечение из стека, но дальше путаюсь с указателями. Подскажите по логике как дальше правильно в...

Создание стека с односвязным LinkedList - C++
В данной программе требуется создать методы для работы со стеком. (Показать инкапсуляцию в C++) Первый раз пишу на C++, опыта...

Создание стека - код не компилируется - C++
Пытаюсь разобраться с динамическими структурами данных. Списал код, но не компилируется #pragma hdrstop #pragma argsused #include...

что означает знак ||? - C++
Что означает || это знак в 6 строчке части программы? } void GetSum (const node * Top, int &amp;sum) { if(Top != NULL) { ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5276 / 4596 / 1541
Регистрация: 14.04.2014
Сообщений: 18,263
06.07.2014, 14:17     Создание стека по примеру из учебника Лафоре. Что означает top = -1? #2
top - это индекс верхнего элемента стека в массиве st. top = -1 означает, что стек пустой. MAX - просто максимальный размер массива под стек. Надо добавить проверку в push(), что top < MAX, а то будет выход за границы массива при попытке добавить пятый элемент.
Пацан_
2 / 2 / 1
Регистрация: 22.05.2013
Сообщений: 39
06.07.2014, 16:03  [ТС]     Создание стека по примеру из учебника Лафоре. Что означает top = -1? #3
Все, разобрался. Я еще перепутал работу префиксной и постфиксной операции ++, из-за этого и непонятно было.
Ответ Создать тему
Опции темы

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