Как эффективно очистить элементы из стека?

Выделение не влияет на производительность кода, но облегчает жизнь разработчикам Изучение

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

Здесь мы обсудим некоторые процессы очистки стека, поскольку по умолчанию нет функции clear() для удаления элементов из стека.

Очистите стек, используя цикл

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

  • Проверьте, пуст стек или нет.
  • Вытащите элемент.
  • Повторяйте два вышеуказанных шага, пока стек не станет пустым.

Ниже приведена реализация вышеуказанного подхода:

С++

#include <bits/stdc++.h>
using namespace std;
// Function to clear stack
void clearStack(stack<int>& s)
{
    while (s.size() != 0) {
        s.pop();
    }
    return;
}
// Driver Code
int main()
{
    // Initilizing a satck
    stack<int> s;
    s.push(10);
    s.push(20);
    s.push(30);
    s.push(40);
    s.push(50);
    // Calling clearStack function to clear the stack
    clearStack(s);
    cout << s.size() << endl;
    return 0;
}

Java

// Java code for above approach
import java.io.*;
import java.util.*;
class GFG {
    // Function to clear stack
    static void clearStack(Stack<Integer> s)
    {
        while (s.size() != 0) {
            s.pop();
        }
        return;
    }
    public static void main(String[] args)
    {
        // Initializing a stack
        Stack<Integer> s = new Stack<>();
        s.push(10);
        s.push(20);
        s.push(30);
        s.push(40);
        s.push(50);
        // Calling clearStack function to clear the stack
        clearStack(s);
        System.out.println(s.size());
    }
}
// This code is contributed by lokesh.

Python3

# Python code for above approach
# Function to clear stack
def clearStack(s):
    while(len(s)!=0):
        s.pop()
    return
# Driver Code
# Initilizing a satck
s=[]
s.append(10)
s.append(20)
s.append(30)
s.append(40)
s.append(50)
# Calling clearStack function to clear the stack
clearStack(s)
print(len(s))
# This code is contributed by Pushpesh Raj.

Выход

0

Временная сложность: O(N), где N — размер стека.

Читайте также:  Почему чтение кода важнее написания?

Вспомогательное пространство: O(1).

Очистите стек, назначив новый пустой стек

Мы можем назначить новый пустой стек той же объявленной переменной. Он использует назначение перемещения, а не удаление элементов один за другим. Но проблема в том, что старый стек на самом деле не удаляется и все еще находится в памяти. Так что это тратит немного памяти.

Ниже представлена ​​реализация идеи.

С++

#include <bits/stdc++.h>
using namespace std;
// Driver code
int main()
{
    // Initilizing a satck
    stack<int> s;
    s.push(10);
    s.push(20);
    s.push(30);
    s.push(40);
    s.push(50);
    // By assigning new empty stack
    s = stack<int>();
    // Printing the size of stack
    cout << s.size() << endl;
    return 0;
}

Python3

# Python code for above approach
# Driver Code
# Initilizing a satck
s=[]
s.append(10)
s.append(20)
s.append(30)
s.append(40)
s.append(50)
# By assigning new empty stack
s=[]
# Printing the size of stack
print(len(s))
# This code is contributed by Pushpesh Raj.

Выход

0

Оцените статью
bestprogrammer.ru
Добавить комментарий