Вы когда-нибудь замечали количество тарелок, сложенных в ресторане?…

Вы когда-нибудь наблюдали, как расположены эти кучи?

Если да, вам будет легче понять, что такое стек.

Определение стека выглядит следующим образом:

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

В сценарии с кучкой обеденных тарелок в ресторане, если человек хочет оставить новую тарелку, ему нужно держать ее над самой верхней тарелкой, или он хочет убрать тарелку, которая ему нужна, чтобы убрать самую верхнюю тарелку. Тот, который находится в самом низу, останется на более длительное время. Следовательно, говорят, что структура данных стека работает по принципу «последним пришел — первым вышел» (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..

СПАСИБО, ЧИТАТЕЛИ:)

-Прекша



https://twitter.com/preksha_shetti