Kursinhalt
Überblick Über Algorithmen und Datenstrukturen
Überblick Über Algorithmen und Datenstrukturen
Stapel
Eine Stack-Datenstruktur ist eine sogenannte LIFO (Last In, First Out)-Datenstruktur. Das bedeutet, dass das zuletzt in den Stack eingefügte Element das erste ist, das entfernt wird. Und natürlich ist es sehr wichtig, dass wir nur auf das letzte Element in einer Datenstruktur zugreifen können, wenn wir mit dem Stack arbeiten.
Stack-Implementierung
import numpy as np class Stack: def __init__(self): self.stack = np.array([]) # Initialize an empty NumPy array def push(self, item): self.stack = np.append(self.stack, item) # Append the item to the end of the array def pop(self): if self.is_empty(): print("Stack is empty.") # Handle empty stack case gracefully return None # Return None if the stack is empty return_value = self.stack[-1] # Store the value to return self.stack = np.delete(self.stack, -1) # Remove the last item from the array return return_value # Return the removed item def is_empty(self): return self.stack.size == 0 # Check if the stack is empty # Example usage: stack = Stack() stack.push(1) stack.push(2) stack.push(3) print("Stack:", stack.stack) print("Pop:", stack.pop()) print("Stack after pop:", stack.stack) # Attempt to pop from an empty stack stack.pop() stack.pop() print("Pop from empty stack:", stack.pop()) # Should print 'Stack is empty.'
Es ist wichtig zu beachten, dass ein Stack ein abstrakter Datentyp ist. Das bedeutet, dass er nur Verhalten definiert, aber keine konkrete Implementierung. Der abstrakte Datentyp Stack kann entweder mit Hilfe der Array- oder Verkettete Liste-Datenstruktur implementiert werden.
In der Regel werden in konkreten Implementierungen des Stacks zwei grundlegende Methoden verwendet:
push()
- fügt ein Element in einen Stack ein;pop()
- entfernt das zuletzt eingefügte Element aus einem Stack.
Zeitkomplexität der grundlegenden Operationen
Danke für Ihr Feedback!