Вы когда-нибудь замечали количество тарелок, сложенных в ресторане?…
Вы когда-нибудь наблюдали, как расположены эти кучи?
Если да, вам будет легче понять, что такое стек.
Определение стека выглядит следующим образом:
Стек — это линейная структура данных, в которой элементы вставляются или удаляются только по одному.
В сценарии с кучкой обеденных тарелок в ресторане, если человек хочет оставить новую тарелку, ему нужно держать ее над самой верхней тарелкой, или он хочет убрать тарелку, которая ему нужна, чтобы убрать самую верхнюю тарелку. Тот, который находится в самом низу, останется на более длительное время. Следовательно, говорят, что структура данных стека работает по принципу «последним пришел — первым вышел» (LIFO).
Давайте посмотрим на функциональные возможности стека: стек в основном имеет четыре операции. а именно, push (чтобы вставить элемент в стек), pop (чтобы удалить элемент из стека), overflow (чтобы проверить, полон ли стек), underflow (чтобы проверить, пуст стек или нет).
Примечание. Код написан на языке C.
Чтобы создать стек:
Создание стека может быть выполнено с использованием одномерного массива.
createStack(){
#define SIZE 10
int stack[SIZE];
top=-1;
}
Здесь SIZE относится к максимальному количеству элементов, которые может содержать стек. стек — это имя массива, вершина — это переменная-указатель, которая всегда указывает на самый верхний элемент в стеке.
Чтобы поместить элемент в стек:
void push(){ if(top==SIZE-1){ printf("STACK OVERFLOW"); return 0;
} printf("\tEnter the element to be pushed:"); scanf("%d",&item); top++; //top increments by one stack[top]=item; //item assigned }
Во-первых, проверьте, достаточно ли места или нет. Если доступно, запросите у пользователя элемент, который нужно поместить, а затем поместите этот элемент внутрь стека. В противном случае будет напечатано сообщение «STACK OVERFLOW».
Чтобы вытолкнуть элемент из стека:
void pop(){
if(top==-1){
printf("\tSTACK UNDERFLOW\n");
return 0;
}
printf("\t %d is deleted from stack",stack[top]);
top--; //top decrements by one
printf("\tDeleted item =%d",stack[top]);
}
Перед удалением элемента он проверяет, присутствует ли этот элемент в стеке или нет. Если он присутствует, он извлекает самый верхний элемент, иначе он печатает сообщение «STACK UNDERFLOW».
Чтобы отобразить содержимое стека:
void display(){
if(top==-1){
printf("\tSTACK UNDERFLOW\n");
return 0;
}
printf("\n\n\tContents of the stack are:\n");
for (i=0; i<top; i++)
printf("\t %d\n",stack[i]);
}
Перед отображением элемента он проверяет, присутствует ли элемент в стеке или нет. Если он присутствует, он отображает все элементы, используя цикл for, иначе он печатает сообщение «STACK UNDERFLOW».
Применение стека:
- Преобразование и вычисление арифметического выражения
- Обработка рекурсии
- Обработка скобок
- Возвращение
Нажмите на ссылку ниже для получения полного кода:
%github.com/Preksha-N/Data-Structures/blob/m..
СПАСИБО, ЧИТАТЕЛИ:)
-Прекша