Stack top c что это
Перейти к содержимому

Stack top c что это

  • автор:

stack top() in C++ STL

In this article, we will be discussing the working, syntax, and examples of stack::top() function in C++ STL.

What is Stack in C++ STL?

Stacks are the data structure that stores the data in LIFO (Last In First Out) where we do insertion and deletion from the top of the last element inserted. Like a stack of plates, if we want to push a new plate into the stack we insert on the top and if we want to remove the plate from the stack, we then also remove it from the top.

What is stack::top()?

stack::top() function is an inbuilt function in C++ STL, which is defined in <stack> header file. top() is used to access the element at the top of the stack container. In a stack, the top element is the element that is inserted at the last or most recently inserted element.

Syntax

Parameters

The function accepts no parameter(s) −

Return value

This function returns a reference of the element at the top of the stack container.

Week 4 — Part1: Struct, Stacks, Linked Lists, and Queues

Before starting: Stack as Data Structure != Stack Memory

Stack as a data structure is not related to the stack memory area we learned about last weeks, and they are completely different things. So just refer to stack as a data structure by Stack, and the stack memory area by Stack memory. Make yourself a glossary on your notebook.

C++ Struct

In first week, we have walked through different primitive data types (PDTs), or the first-class citizens in the C++. However, we can make our own types, that consists of multiple members, using struct feature. Members in struct can either be primitive data types (PDT) or other struct s. Let’s recall our example of rectangle::area function.

We could have made a custom type using struct , using the following syntax.

Rectangle is now a custom type, consists of two double s. Think of it as a package. We can now make our rectangle::area function more simpler, or much readable using the following implementation.

We may also package an array (either static or dynamic) with its size, using struct

We can also use struct to return multiple values, which is more safe and clean than using multiple references as input and mofifying our interesting results into these input references.

Functions overloading

C++ allows you to have functions with same name, but different parameters.

For example, this is not allowed in C++:

It becomes ambiguous now to call area(1.4,5) , which area function should be called?

However, it is supported by C++ to have functions with same name, but different parameters (different types or different number of parameters).

Stacks

In fact, Stack is more of behaviour of structure than being a structure itself. We can turn a regular array (either static or dynamic) into a stack with simple modification. Stack is an Abstract Data Type (ADT) they may have different implementations:

  • Using arrays.
  • Using linked lists (later on this note).

For both implementations, the following requirements should be satisfied in order to hava an ADT Stack (from wikipedia):

  • push, which adds an element to the collection,
  • pop, which removes the most recently added element that was not yet removed,
  • front, which returns the most recent element in the stack.

The order in which elements come off a stack gives rise to its alternative name, LIFO (last in, first out). Additionally, a peek operation may give access to the top without modifying the stack. – Stack (Abstract Data Type).

This table should draw the boundaries between Abstract Data Types (ADT) and Concrete Data Types, and keep in mind that Abstract Data Types are built upon Concrete Data Types.

Abstract Data Type (ADT) Possible Implementations
Stack Array or Linked List
Queue Array or Linked List

So again, we can turn an array into a Stack using minor modifications.

Home Demo

Open StackArray and play with the stack to realize its behaviour. This demo shows a Stack implemented with arrays.

More intuition about Stack as ADT

This video should give you an intuition about Stack as an asbtract data type (ADT).

Implementing a Stack using Static Array

As we learned earlier in this page, we have an awesome feature in C++ called struct . We can make all the stack important variable in one box. So, this box should include.

1. The static array

We need to make an array with a relatively large capacity for our stack. Let’s make a static array in our box with size 100. Size 100 is the size of the static array, which is the maximum size our Stack can have. However, initially, our Stack is empty.

Finally, let’s add a variable indicating the top element

Now we have all what we need for a stack. Let’s now implement our operations

When pushing a new element, we will increment the top variable, and add the new value to the array at top position.

  • This version passes by value then returns the new stack.
  • Note that we need to return the updated IntegerStack100 because we have modified a copy, not the original object.

Alternatively, we can pass the IntegerStack100 by reference, so no need for returning the updated stack, we already modified the original stack using a reference.

Front

Retrieve the first element in the stack (aka the most recent element), which is pointed to by top.

To pop the stack, we just need to decrement the top variable.

  • This version passes by value then returns the new stack.

Alternatively, we can pass by reference and modify in-place, so no need to return the modified stack.

Retrieving the size of stack

It is important to have an operation that returns the size of stack (its elements count).

Asking our stack if it is empty

We also need to a function to ask our stack if it is empty or not.

Wouldn’t be much simpler to say:

Final Code

Here is the final code, but we implemented if for stack of char elements instead. Releazie that there is no difference in logic.

Practice yourself, and make other Stack versions of int , double , and bool . Also, make other variants of your Stack that works with dynamic arrays. In this case, the struct should hold pointer to the first element of the array.

Linked Lists

Arrays as we learned are allocated as contiguous elements in the memory (i.e a single block). In contrast, we may have our elements to be sparse in memory, but each element can see the next element. This kind of structure is called Linked List.

Why linked lists

Linked lists are very flexible in size. Our Arrays once constructed we cannot change their sizes, but we create a new array with new size, then copy the old elements into the new array. Which is computatinally expensive task. In linked lists, we are free to add new elements very directly.

The Memory Mode: Array vs. Linked List

Pointers revisited

Each element in the linked list is denoted by a Node. To connect between nodes, we may use pointers. So, each Node has a pointer pointing to the Next Node. The DNA sequence as a Linked List (LL), can be achieved with the following

The last Node (back)

How to recognize that we are on the latest Node?. In this case, we will make the next pointer equals to nullptr . So we know then we are reached the last element.

For example, if we need to print all elements on a list, we will use this very simple logic:

The LL Structure

We need to make a struct that will define our LL.

Head (front)

If we have a pointer pointing to the first element in our LL, then we have an access to the whole list, because every Node can see the Next Node.

Tail (back)

Tail is a pointer pointing to the last element to the list. So when we add a new element in the list, we are going to use the tail pointer.

So our LL struct is now consisting of:

If we need to insert element on the back:

If we only have an access to the head of the LL, or in other words, if we don’t have a tail, and need to insert an element to the back, then we have to start iterating from the front until we reach the last element in the LL.

Queues

Queues are another Abstract Data Type (ADT), that might be implemented using concrete structures like arrays and linked lists. We refer to Queue behaviour by FIFO (first in, first out).

The ADT Queue should satisfy the following requirements (from wikipedia):

  • enqueue, which adds an element to the collection end (back), and.
  • dequeue, which removes the first element added (front) that was not yet removed.

This makes the queue a First-In-First-Out (FIFO) data structure. In a FIFO data structure, the first element added to the queue will be the first one to be removed. Additionally, a peek operation may give access to the front element without dequeuing it. – Queue (Abstract Data Type)

Home Demo

Open QueueArray and play with the queue to realize its behaviour. This demo shows a Queue implemented with arrays.

More intuition about Queue as ADT

To get more inuition about Queue properties as an ADT:

Biomedical Application: Queues of Biological Signals

Queues as a data structure can be used to represent a time window (interval) of biological signal being displayed on screen.

For example, every 10 ms a Queue of ECG signal may enqueue new sample to the back (right to the figure), and dequeue old sample from the front (left to the figure). So, this way you can view an ECG signal of the last 30 seconds. Therefore, we are interested to have a queue with capacity of:

Implementing Queue using LL

Implementing Queue using concrete array

1. The circular buffer

We need to make a buffer (array) with a relatively large capacity for our queue. Let’s make a static array in our box with size 100. Size 100 is the size of the static array, which is the maximum size our Queue can have. Similarly, our Queue is initially empty.

Finally, let’s make two variables indicating the front and the back of our Queue
Making our buffer to act as a circular buffer

We need to make our buffer to be flexible such that we don’t need to shift all elements when we dequeue the front element. Alternatively, we will turn our buffer to a circular buffer using simple logic.

  • the blue pointer is the front, where we dequeue elements.
  • the red pointer is the back, where we enqueue new elements.
About

These pages contain online teaching materials prepared by teaching assistants in the biomedical engineering department at Cairo University.

Stack top c что это

Использование функций stack::top и stack::empty STL в Visual C++

В этой статье показано, как использовать функции stack::top stack::empty STL и функции STL в Visual C++. Сведения в этой статье относятся только к неуправляемому коду Visual C++.

Исходная версия продукта: Visual C++
Исходный номер базы знаний: 158040

Обязательный заголовок

  • <stack>

Прототип

Имена классов или параметров в прототипе могут не совпадать с версией в файле заголовка. Некоторые из них были изменены для повышения удобочитаемости.

Описание функций stack::top и stack::empty

Функция top возвращает самый верхний элемент стека. Перед вызовом функции необходимо убедиться, что в стеке есть один или несколько элементов top . Первая версия функции top возвращает ссылку на элемент верхней части стека, что позволяет изменить значение. Вторая функция возвращает константную ссылку, гарантируя, что вы случайно не измените стек.

Функция empty возвращает значение true, если в стеке нет элементов. Если имеется один или несколько элементов, функция вернет значение false. Эту функцию следует empty использовать для проверки на наличие элементов в стеке перед вызовом функции top .

Класс stack

Класс адаптера контейнера шаблона, который предоставляет ограничение функциональности, ограничивая доступ к элементу, который был последним добавлен в некоторый тип базового контейнера. Класс stack используется, когда важно четко определить, что в контейнере выполняются только stack операции.

Синтаксис

Параметры

Type
Тип данных элемента для сохранения в стеке.

Container
Тип базового контейнера, используемый для реализации стека. Значением по умолчанию является класс deque<Type> .

Remarks

Элементы класса Type , указанного в первом параметре шаблона объекта стека, являются синонимами value_type и должны соответствовать типу элемента в базовом классе Container контейнера, заданном вторым параметром шаблона. Его Type необходимо назначить, чтобы можно было копировать объекты этого типа и назначать значения переменным этого типа.

Подходящие базовые классы контейнеров для стека включают deque , list класс и vector класс, или любой другой контейнер последовательности, поддерживающий операции back push_back , и pop_back . Класс базового контейнера инкапсулирован в адаптер контейнера, который предоставляет только ограниченный набор функций-членов контейнера последовательностей в виде открытого интерфейса.

Объекты stack равны, если и только в том случае, если элементы класса Type являются равными и являются менее сопоставимыми, если и только в том случае, если элементы класса Type являются менее сопоставимыми.

Класс stack поддерживает структуру данных последнего входа (LIFO). Хороший аналог такого подхода — стопка тарелок. Элементы (тарелки) можно вставлять, проверять или удалять только из верхней части стека, которая является последним элементом в конце базового контейнера. Ограничение доступа только к верхнему элементу является причиной использования stack класса.

Класс queue поддерживает структуру данных first-in (FIFO). Хороший аналог такого подхода — очередь из людей к банковскому служащему. Элементы (люди) можно добавлять в конец очереди и удалять из начала очереди. Проверять можно как начало, так и конец очереди. Ограничение доступа только к элементам передней и задней части таким образом является причиной использования меха queue класса.

Класс priority_queue упорядочивает его элементы таким образом, чтобы самый большой элемент всегда был в верхней позиции. Он поддерживает вставку элемента, а также проверку и удаление верхнего элемента. Хороший аналог такого подхода — очередь из людей, упорядоченная по возрасту, росту или любому другому критерию.

Члены

Конструкторы
Имя Описание
stack Создает stack , который является пустым или копией объекта базового контейнера.
Определения типов
Имя Описание
container_type Тип, предоставляющий базовый контейнер для принятия stack .
size_type Целочисленный Typedef без знака, который может представлять число элементов в stack .
value_type Тип, представляющий тип объекта, который хранится в виде элемента в stack .
Функции
Имя Описание
empty Проверяет, является ли stack пустым.
pop Удаляет элемент из верхней части stack .
push Добавляет элемент в верхнюю часть stack .
size Возвращает количество элементов в контейнере stack .
top Возвращает ссылку на элемент в верхней части stack .

container_type

Тип, предоставляющий базовый контейнер для изменения.

Remarks

Этот тип является синонимом для параметра шаблона Container . Все три класса контейнера последовательности стандартной библиотеки C++ — vector класс, list класс и класс deque по умолчанию — соответствуют требованиям, которые будут использоваться в качестве базового контейнера для stack объекта. Также можно использовать пользовательские типы, удовлетворяющие таким требованиям.

Дополнительные сведения Container см. в разделе stack «Примечания» раздела «Класс».

Пример

Пример объявления и использования container_type см. в примере stack::stack .

empty

Проверяет, пуст ли стек.

Возвращаемое значение

true Значение , если стек пуст; false Значение , если стек не является непустимным.

Пример

Удаляет элемент из верхней части стека.

Remarks

Для применения функции-члена стек должен быть непустым. Начало (верх) стека — это положение, занимаемое последним добавленным элементом, которое является последним элементом в конце контейнера.

Пример

Добавляет элемент в начало стека.

Параметры

val
Элемент, добавленный в верх стека.

Remarks

Начало (верх) стека — это положение, занимаемое последним добавленным элементом, которое является последним элементом в конце контейнера.

Пример

Возвращает количество элементов в стеке.

Возвращаемое значение

Текущая длина стека.

Пример

size_type

Целочисленный тип без знака, который может представлять количество элементов в стеке.

Remarks

Этот тип является синонимом для size_type базового контейнера, адаптированного стеком.

Пример

Пример объявления и использования size_type см. в примере size .

stack

Создает стек, который является пустым или представляет собой копию класса базового контейнера.

Параметры

right
Контейнер, копией которого должен стать создаваемый стек.

Пример

Возвращает ссылку на элемент вверху стека.

Возвращаемое значение

Ссылка на последний элемент в контейнере, вставленный вверху стека.

Remarks

Для применения функции-члена стек должен быть непустым. Начало (верх) стека — это положение, занимаемое последним добавленным элементом, которое является последним элементом в конце контейнера.

Если возвращаемое значение назначено top объекту const_reference , stack объект нельзя изменить. Если возвращаемое значение top присваивается объекту reference , stack его можно изменить.

Пример

value_type

Тип, представляющий тип объекта, который хранится в стеке в виде элемента.

Remarks

Этот тип является синонимом для value_type базового контейнера, адаптированного стеком.

стек top () в C ++ STL

Стеки являются типом контейнерных адаптеров с типом работы LIFO (Last In First Out), где новый элемент добавляется на одном конце, называемом вершиной стека, и элемент удаляется только с того же конца.

Функция stack :: top () top () используется для ссылки на верхний (или самый новый) элемент стека.

Синтаксис:

Параметры: Для передачи в качестве параметра значение не требуется.

Возвращаемое значение: Прямая ссылка на верхний элемент стекового контейнера.

Примеры:

Ошибки и исключения

  1. Если контейнер стека пуст, это вызывает неопределенное поведение
  2. У него нет гарантии исключения исключения, если стек не пуст

// Программа CPP для иллюстрации
// Реализация функции top ()
#include <iostream>
#include <stack>

using namespace std;

stack< int > mystack;

Выход:

Заявка :
Учитывая стек целых чисел, найдите сумму всех целых чисел.

Алгоритм

  1. Проверьте, пуст ли стек, если нет, добавьте верхний элемент в переменную, инициализированную как 0, и вытолкните верхний элемент.
  2. Повторяйте этот шаг, пока стек не станет пустым.
  3. Выведите окончательное значение переменной.

// Программа CPP для иллюстрации
// Применение функции top ()
#include <iostream>
#include <stack>

stack top() in C++ STL

Stacks are a type of container adaptors with LIFO(Last In First Out) type of work, where a new element is added at one end called the top of the stack, and an element is removed from the same end only.

stack::top() top() function is used to reference the top(or the newest) element of the stack.

Syntax :

Parameters: No value is needed to pass as the parameter.
Return Value: Direct reference to the top element of the stack container.

Stack top c что это

Использование функций stack::top и stack::empty STL в Visual C++

В этой статье показано, как использовать функции stack::top stack::empty STL и функции STL в Visual C++. Сведения в этой статье относятся только к неуправляемому коду Visual C++.

Исходная версия продукта: Visual C++
Исходный номер базы знаний: 158040

Обязательный заголовок

  • <stack>

Прототип

Имена классов или параметров в прототипе могут не совпадать с версией в файле заголовка. Некоторые из них были изменены для повышения удобочитаемости.

Описание функций stack::top и stack::empty

Функция top возвращает самый верхний элемент стека. Перед вызовом функции необходимо убедиться, что в стеке есть один или несколько элементов top . Первая версия функции top возвращает ссылку на элемент верхней части стека, что позволяет изменить значение. Вторая функция возвращает константную ссылку, гарантируя, что вы случайно не измените стек.

Функция empty возвращает значение true, если в стеке нет элементов. Если имеется один или несколько элементов, функция вернет значение false. Эту функцию следует empty использовать для проверки на наличие элементов в стеке перед вызовом функции top .

Класс stack

Класс адаптера контейнера шаблона, который предоставляет ограничение функциональности, ограничивая доступ к элементу, который был последним добавлен в некоторый тип базового контейнера. Класс stack используется, когда важно четко определить, что в контейнере выполняются только stack операции.

Синтаксис

Параметры

Type
Тип данных элемента для сохранения в стеке.

Container
Тип базового контейнера, используемый для реализации стека. Значением по умолчанию является класс deque<Type> .

Remarks

Элементы класса Type , указанного в первом параметре шаблона объекта стека, являются синонимами value_type и должны соответствовать типу элемента в базовом классе Container контейнера, заданном вторым параметром шаблона. Его Type необходимо назначить, чтобы можно было копировать объекты этого типа и назначать значения переменным этого типа.

Подходящие базовые классы контейнеров для стека включают deque , list класс и vector класс, или любой другой контейнер последовательности, поддерживающий операции back push_back , и pop_back . Класс базового контейнера инкапсулирован в адаптер контейнера, который предоставляет только ограниченный набор функций-членов контейнера последовательностей в виде открытого интерфейса.

Объекты stack равны, если и только в том случае, если элементы класса Type являются равными и являются менее сопоставимыми, если и только в том случае, если элементы класса Type являются менее сопоставимыми.

Класс stack поддерживает структуру данных последнего входа (LIFO). Хороший аналог такого подхода — стопка тарелок. Элементы (тарелки) можно вставлять, проверять или удалять только из верхней части стека, которая является последним элементом в конце базового контейнера. Ограничение доступа только к верхнему элементу является причиной использования stack класса.

Класс queue поддерживает структуру данных first-in (FIFO). Хороший аналог такого подхода — очередь из людей к банковскому служащему. Элементы (люди) можно добавлять в конец очереди и удалять из начала очереди. Проверять можно как начало, так и конец очереди. Ограничение доступа только к элементам передней и задней части таким образом является причиной использования меха queue класса.

Класс priority_queue упорядочивает его элементы таким образом, чтобы самый большой элемент всегда был в верхней позиции. Он поддерживает вставку элемента, а также проверку и удаление верхнего элемента. Хороший аналог такого подхода — очередь из людей, упорядоченная по возрасту, росту или любому другому критерию.

Члены

Конструкторы
Имя Описание
stack Создает stack , который является пустым или копией объекта базового контейнера.
Определения типов
Имя Описание
container_type Тип, предоставляющий базовый контейнер для принятия stack .
size_type Целочисленный Typedef без знака, который может представлять число элементов в stack .
value_type Тип, представляющий тип объекта, который хранится в виде элемента в stack .
Функции
Имя Описание
empty Проверяет, является ли stack пустым.
pop Удаляет элемент из верхней части stack .
push Добавляет элемент в верхнюю часть stack .
size Возвращает количество элементов в контейнере stack .
top Возвращает ссылку на элемент в верхней части stack .

container_type

Тип, предоставляющий базовый контейнер для изменения.

Remarks

Этот тип является синонимом для параметра шаблона Container . Все три класса контейнера последовательности стандартной библиотеки C++ — vector класс, list класс и класс deque по умолчанию — соответствуют требованиям, которые будут использоваться в качестве базового контейнера для stack объекта. Также можно использовать пользовательские типы, удовлетворяющие таким требованиям.

Дополнительные сведения Container см. в разделе stack «Примечания» раздела «Класс».

Пример

Пример объявления и использования container_type см. в примере stack::stack .

empty

Проверяет, пуст ли стек.

Возвращаемое значение

true Значение , если стек пуст; false Значение , если стек не является непустимным.

Пример

Удаляет элемент из верхней части стека.

Remarks

Для применения функции-члена стек должен быть непустым. Начало (верх) стека — это положение, занимаемое последним добавленным элементом, которое является последним элементом в конце контейнера.

Пример

Добавляет элемент в начало стека.

Параметры

val
Элемент, добавленный в верх стека.

Remarks

Начало (верх) стека — это положение, занимаемое последним добавленным элементом, которое является последним элементом в конце контейнера.

Пример

Возвращает количество элементов в стеке.

Возвращаемое значение

Текущая длина стека.

Пример

size_type

Целочисленный тип без знака, который может представлять количество элементов в стеке.

Remarks

Этот тип является синонимом для size_type базового контейнера, адаптированного стеком.

Пример

Пример объявления и использования size_type см. в примере size .

stack

Создает стек, который является пустым или представляет собой копию класса базового контейнера.

Параметры

right
Контейнер, копией которого должен стать создаваемый стек.

Пример

Возвращает ссылку на элемент вверху стека.

Возвращаемое значение

Ссылка на последний элемент в контейнере, вставленный вверху стека.

Remarks

Для применения функции-члена стек должен быть непустым. Начало (верх) стека — это положение, занимаемое последним добавленным элементом, которое является последним элементом в конце контейнера.

Если возвращаемое значение назначено top объекту const_reference , stack объект нельзя изменить. Если возвращаемое значение top присваивается объекту reference , stack его можно изменить.

Пример

value_type

Тип, представляющий тип объекта, который хранится в стеке в виде элемента.

Remarks

Этот тип является синонимом для value_type базового контейнера, адаптированного стеком.

стек top () в C ++ STL

Стеки являются типом контейнерных адаптеров с типом работы LIFO (Last In First Out), где новый элемент добавляется на одном конце, называемом вершиной стека, и элемент удаляется только с того же конца.

Функция stack :: top () top () используется для ссылки на верхний (или самый новый) элемент стека.

Синтаксис:

Параметры: Для передачи в качестве параметра значение не требуется.

Возвращаемое значение: Прямая ссылка на верхний элемент стекового контейнера.

Примеры:

Ошибки и исключения

  1. Если контейнер стека пуст, это вызывает неопределенное поведение
  2. У него нет гарантии исключения исключения, если стек не пуст

// Программа CPP для иллюстрации
// Реализация функции top ()
#include <iostream>
#include <stack>

using namespace std;

stack< int > mystack;

Выход:

Заявка :
Учитывая стек целых чисел, найдите сумму всех целых чисел.

Алгоритм

  1. Проверьте, пуст ли стек, если нет, добавьте верхний элемент в переменную, инициализированную как 0, и вытолкните верхний элемент.
  2. Повторяйте этот шаг, пока стек не станет пустым.
  3. Выведите окончательное значение переменной.

// Программа CPP для иллюстрации
// Применение функции top ()
#include <iostream>
#include <stack>

stack top() in C++ STL

In this article, we will be discussing the working, syntax, and examples of stack::top() function in C++ STL.

What is Stack in C++ STL?

Stacks are the data structure that stores the data in LIFO (Last In First Out) where we do insertion and deletion from the top of the last element inserted. Like a stack of plates, if we want to push a new plate into the stack we insert on the top and if we want to remove the plate from the stack, we then also remove it from the top.

What is stack::top()?

stack::top() function is an inbuilt function in C++ STL, which is defined in <stack> header file. top() is used to access the element at the top of the stack container. In a stack, the top element is the element that is inserted at the last or most recently inserted element.

Syntax

Parameters

The function accepts no parameter(s) −

Return value

This function returns a reference of the element at the top of the stack container.

stack top() in C++ STL

Stacks are a type of container adaptors with LIFO(Last In First Out) type of work, where a new element is added at one end called the top of the stack, and an element is removed from the same end only.

stack::top() top() function is used to reference the top(or the newest) element of the stack.

Syntax :

Parameters: No value is needed to pass as the parameter.
Return Value: Direct reference to the top element of the stack container.

Stack in C Programming — Introduction and Implementation

A stack is a linear data structure which follows LIFO (last in first out) or FILO (first in last out) approach to perform a series of basic operation, ie. Push, Pop, atTop, Traverse, Quit, etc. A stack can be implemented using an array and linked list.

Stack Operations in C

There are two basic operations performed in stack:

1) Push: Adds an element in the stack.

2) Pop: Removes an element from the stack.

  • Note: The elements always popped and pushed in the opposite order.

Some Other Important Stack Operations are

  • isEmpty: checks whether the stack is empty or not
  • atTop: It returns the top element present in the stack
  • Traverse: This operation process all the elements present in stack exactly once.
  • Quit: Quit the stack

Stack Overflow and Underflow

  • Stack Overflow: It is a condition that happens when we try to push more elements into the already saturated stack
  • Stack Underflow: It is a condition that happens when we try to pop an element from an empty stack

How does Stack Works?

Stack Programming in C

A stack is a limited access data structure because push (addition) and pop (deletion) occur only at one end of the structure known as the top of the stack. Push adds an item to the top of the stack, pop removes the item from the top.

Stack works on LIFO/FILO approach that means the element pushed first in the stack will be popped last will acquire top position in the stack and will pop first.

For example, a stack is the pile of dinner plates in your Kitchen: When you take out a plate from the pile, you take the plate on the top of the pile. But this is precisely the plate that was added most recently on top of the pile; therefore LIFO approach is applied here as the plate inserted at last is taken out first. Similarly, If you need to take out the plate at the bottom of the pile, you must remove all the plates on top of it to reach it; therefore, FILO approach will be applied here as the plate inserted first will be taken out at last.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *