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

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

Восстановить пароль Регистрация
 
Пацан_
2 / 2 / 1
Регистрация: 22.05.2013
Сообщений: 39
06.07.2014, 13:51     Создание стека по примеру из учебника Лафоре. Что означает top = -1? #1
Здравствуйте, помоги разобраться. Это пример из учебника Лафоре ООП С++. Не могу понять почему когда в конструкторе 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++ Задание из книги Р.Лафоре. Что автор имел ввиду?
C++ скажите пожалуйста, что означает здесь b. ,это какия-либо функция или что?
Что лучше читать Программирование: принципы и практика - Страуструпа или ООП в С++ - Лафоре C++
C++ Что означает запись в скобках и что возвращает return
C++ Создание стека
Поясните пожалуйста что означает двоеточие и то что идет после него C++
C++ Что такое #, include, что это означает
C++ Литература: что читать после Лафоре?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4324 / 3745 / 1260
Регистрация: 14.04.2014
Сообщений: 14,704
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
Все, разобрался. Я еще перепутал работу префиксной и постфиксной операции ++, из-за этого и непонятно было.
Yandex
Объявления
06.07.2014, 16:03     Создание стека по примеру из учебника Лафоре. Что означает top = -1?
Ответ Создать тему
Опции темы

Текущее время: 12:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru