Python - Stack

Nel dizionario inglese la parola pila significa disporre gli oggetti sopra un altro. È lo stesso modo in cui la memoria viene allocata in questa struttura di dati. Memorizza gli elementi di dati in modo simile a come un mazzo di piatti viene conservato uno sopra l'altro in cucina. Quindi la struttura dei dati dello stack consente operazioni a un'estremità che può essere chiamata in cima allo stack. Possiamo aggiungere o rimuovere elementi solo da questa parte dello stack.

In una pila l'elemento inserito per ultimo in sequenza verrà fuori per primo in quanto possiamo rimuovere solo dalla cima della pila. Tale caratteristica è nota come funzione Last in First Out (LIFO). Le operazioni di aggiunta e rimozione degli elementi sono note comePUSH e POP. Nel seguente programma lo implementiamo come funzioni di aggiunta e rimozione. Creiamo un elenco vuoto e utilizziamo i metodi append () e pop () per aggiungere e rimuovere gli elementi di dati.

PUSH into a Stack

class Stack:

    def __init__(self):
        self.stack = []

    def add(self, dataval):
# Use list append method to add element
        if dataval not in self.stack:
            self.stack.append(dataval)
            return True
        else:
            return False
# Use peek to look at the top of the stack

    def peek(self):     
	    return self.stack[-1]

AStack = Stack()
AStack.add("Mon")
AStack.add("Tue")
AStack.peek()
print(AStack.peek())
AStack.add("Wed")
AStack.add("Thu")
print(AStack.peek())

Quando il codice precedente viene eseguito, produce il seguente risultato:

Tue
Thu

POP da uno stack

Come sappiamo che possiamo rimuovere solo l'elemento più alto di dati dallo stack, implementiamo un programma python che lo fa. La funzione di rimozione nel seguente programma restituisce l'elemento più in alto. controlliamo l'elemento in alto calcolando prima la dimensione dello stack e poi usiamo il metodo pop () integrato per trovare l'elemento più in alto.

class Stack:

    def __init__(self):
        self.stack = []

    def add(self, dataval):
# Use list append method to add element
        if dataval not in self.stack:
            self.stack.append(dataval)
            return True
        else:
            return False
        
# Use list pop method to remove element
    def remove(self):
        if len(self.stack) <= 0:
            return ("No element in the Stack")
        else:
            return self.stack.pop()

AStack = Stack()
AStack.add("Mon")
AStack.add("Tue")
AStack.add("Wed")
AStack.add("Thu")
print(AStack.remove())
print(AStack.remove())

Quando il codice precedente viene eseguito, produce il seguente risultato:

Thu
Wed