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

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

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

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

06.07.2014, 13:51. Просмотров 392. Ответов 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;
   }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2014, 13:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание стека по примеру из учебника Лафоре. Что означает top = -1? (C++):

Что означает поле cached в программе top? - Linux
$&gt; top .. Mem: 3978392k total, 2880564k used, 1097828k free, 32704k buffers Swap: 4002812k total, 722304k used, 3280508k...

Что означает код: $("#top .menu li a") - jQuery
Здраствуйте. Может кто нибуть мне помочь обьяснить что означает вот етот код: $(&quot;#top .menu li a&quot;) Заранее благодарю!

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

Создание электронного учебника - Delphi БД
Народ помогите пожалуйста срочно надо. Мне нужно создать электронный учебник по предмету не важно какому, ая понятия не имею как его...

Создание электронного учебника - Delphi
Помогите, пожалуйста, реализовать печать и поиск

Создание электронного учебника - C++ Builder
Всем привет! Мне срочно нужна помощь по C++ Builder. Мне нужно создать электронный учебник. Как связать TreeView и Memo, чтобы при выборе...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
06.07.2014, 14:17 #2
top - это индекс верхнего элемента стека в массиве st. top = -1 означает, что стек пустой. MAX - просто максимальный размер массива под стек. Надо добавить проверку в push(), что top < MAX, а то будет выход за границы массива при попытке добавить пятый элемент.
1
Пацан_
2 / 2 / 1
Регистрация: 22.05.2013
Сообщений: 39
06.07.2014, 16:03  [ТС] #3
Все, разобрался. Я еще перепутал работу префиксной и постфиксной операции ++, из-за этого и непонятно было.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2014, 16:03
Привет! Вот еще темы с ответами:

Создание электронного учебника - Visual Basic .NET
Здравствуйте! Зарнее извиняюсь, если не правильно буду изъясняться... Мне нужно сделать электронный учебник в Visual Studio. Вообщем...

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

создание электронного учебника - Delphi
Дан электронный учебник в html, необходимо сделать оболочку в Delphi. C помощью каких компонентов это возможно сделать?

Создание электронного учебника - C++ Builder
Нужно сделать учебник на builder. Пару вопросов. На форме компонент CppWebBrowser открывает страницу html ... как сделать так чтобы...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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