* fix: replace sh with shell fix replace terminal with shell fix replace node with js fix replace output with shell fix replace cs with csharp fix replace c++ with cpp fix replace c# with csharp fix replace javasctipt with js fix replace syntax with js fix replace unix with shell fix replace linux with shell fix replace java 8 with java fix replace swift4 with swift fix replace react.js with jsx fix replace javascriot with js fix replace javacsript with js fix replace c++ - with cpp fix: corrected various typos fix: replace Algorithm with nothing fix: replace xaml with xml fix: replace solidity with nothing fix: replace c++ with cpp fix: replace txt with shell fix: replace code with json and css fix: replace console with shell
		
			
				
	
	
	
		
			4.2 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title, localeTitle
| title | localeTitle | 
|---|---|
| Stacks | Стеки | 
Стеки
Стеки представляют собой структуру данных First In Last Out (FILO). Это линейная структура данных.
Вы можете представить себе стопку, как тарелки были организованы в ресторане "шведский стол". Вы можете выбрать только тарелку сверху, иначе стек рухнет. Как правило, последний элемент, который нужно вставить, будет удален первым.
Некоторые основные операции стека:
- Push - Вставляет элемент вверху стека.
 - Pop - Удаляет элемент в верхней части стека.
 - isEmpty - проверить, пуст ли пуст или нет.
 - Размер. Возвращает количество элементов в стеке. (Все операции могут выполняться в O (1) раз)
 
Реализация стека возможна с использованием массивов или связанных списков. Ниже приведена простая реализация массива структуры данных стека с наиболее распространенными операциями.
//Stack implementation using array in C++ 
 //You can also include<stack> and then use the C++ STL Library stack class. 
 
 #include <bits/stdc++.h> 
 
 using namespace std; 
 
 class Stack { 
    int t; 
    int arr[MaxN]; 
 public: 
    Stack() { 
        t = 0; 
    } 
    int size() { 
        return t; 
    } 
    bool isEmpty() { 
        return t < 1; 
    } 
    int top() { 
        return arr[t]; 
    } 
    void push(int x) { 
        if (++t >= MaxN) { 
            cout << "Stack is full" << '\n'; 
            return; 
        } 
        arr[t] = x; 
    } 
    void pop() { 
        arr[t--] = 0; 
    } 
 }; 
 
 int main() { 
    Stack st; 
 
    st.push(4); 
    st.push(3); 
    st.push(5); 
    while (!st.isEmpty()) { 
        cout << st.size() << ' ' << st.top() << '\n'; 
        st.pop(); 
    } 
    return 0; 
 } 
Использование массивов в виде стеков
В некоторых языках программирования массив имеет функциональность стека, что позволяет разработчику выполнять операции push и pop без необходимости создания структуры данных пользовательского стека.
Например, массив в JavaScript имеет методы push и pop, позволяющие легко реализовать функциональность стека в приложении.
stack = []; 
 
 let i = 0; 
 while(i < 5) 
  stack.push(i++); 
 
 while(stack.length) { 
  stack.pop(); 
 } 
Список в Python также может выполнять функции стека в приложении. Вместо push можно использовать метод append .
stack = [] 
 
 for i in range(5): 
    stack.append(i) 
 
 while len(stack): 
    stack.pop() 
Приложения
- Поверните рекурсию в цикл.
 - Функции Redo-Undo.
 - Судоку-решатель
 - Глубина первого поиска.
 - Обходы деревьев
 - Выражение Infix -> Префикс / Постфиксное выражение
 - Действительные скобки