Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Пацан_
2 / 2 / 2
Регистрация: 22.05.2013
Сообщений: 39
#1

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

06.07.2014, 13:51. Просмотров 526. Ответов 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
Ответы с готовыми решениями:

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

Что означает код: $("#top .menu li a")
Здраствуйте. Может кто нибуть мне помочь обьяснить что означает вот етот код:...

Литература: что читать после Лафоре?
Посоветуйте что читать дальше после того как прочёл книгу...

Создание электронного учебника
Народ помогите пожалуйста срочно надо. Мне нужно создать электронный учебник по...

Создание электронного учебника
Нужно сделать учебник на builder. Пару вопросов. На форме компонент...

2
nmcf
6259 / 5571 / 2531
Регистрация: 14.04.2014
Сообщений: 23,450
06.07.2014, 14:17 #2
top - это индекс верхнего элемента стека в массиве st. top = -1 означает, что стек пустой. MAX - просто максимальный размер массива под стек. Надо добавить проверку в push(), что top < MAX, а то будет выход за границы массива при попытке добавить пятый элемент.
1
Пацан_
2 / 2 / 2
Регистрация: 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

Создание электронного учебника
Всем привет! Мне срочно нужна помощь по C++ Builder. Мне нужно создать...

Создание электронного учебника
Здравствуйте! Зарнее извиняюсь, если не правильно буду изъясняться... Мне...

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


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

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

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