Ich habe den Stack in Python geschrieben

Was ist überhaupt ein Stapel? Ja, Daten speichern und abrufen. Das ist alles. Ich möchte jedoch zuerst die zuletzt gespeicherten Daten abrufen können. Σ(oдΟ;)

Zum Beispiel, wie unten gezeigt, während 6 Daten vertikal gestapelt werden Angenommen, Sie haben eine Box, die Sie aufbewahren können. 図1.PNG

Leeren Sie zuerst die Schachtel, speichern Sie A und entfernen Sie sie dann. 図2.PNG Nach dem Speichern und Abrufen von A kehrte es in seinen ursprünglichen leeren Zustand zurück. Es ist einfach.

Nachdem Sie den Datenspeicher als Push und den Abruf als Pop bezeichnet haben, Ich habe versucht, die Bewegung von Push / Pop der Daten etwas genauer herauszufinden. Ich drückte A und B und tauchte schließlich auf. Das Letzte, was noch in der Schachtel ist, ist A, nicht wahr? 図3.PNG Auf diese Weise können Sie sich jetzt das Verhalten des Stapels vorstellen, der die letzten Push-Daten zuerst abgibt.

Ich wünschte, ich müsste keine Boxtiefe von 6 haben !? Die Details sind mir egal (lacht). Jetzt schreiben wir in Python.

Vorher, wenn Sie die Beschreibung hier nicht verstehen, Wir empfehlen, bei Progate zu studieren !! https://prog-8.com/

Bereiten wir zunächst eine Box vor, um den Stapel zu realisieren. Das Bild sieht so aus. 図4.PNG Ich habe eine Box mit dem Namen str vorbereitet und die Kapazität so festgelegt, wie viele Daten gespeichert werden können. ptr repräsentiert die Position von 1 bis 6. Ich habe die Bewegung von ptr zur vorherigen Abbildung hinzugefügt. 図5.PNG Auf diese Weise zeigt ptr (Zeiger) die Position der Box an, die gedrückt werden kann. Jetzt, wo Sie sich ptr vorstellen können, ist es endlich Python. Ich habe eine Schachtel gemacht.

stack.py


    def __init__(self,capacity:int = 10):
        self.str  = [None] * capacity
        self.capa = capacity
        self.ptr  = 0

"def __ init __" Bestimmen Sie den Anfangswert im vorbereiteten Programm! Es ist ein Klischee. Die Geschichte beginnt erst, wenn Sie sie zuerst laden, wenn das Programm ausgeführt wird. Als nächstes kommt Push.

stack.py


    def push(self,value):
        if self.ptr >= self.capa:
            raise top.full
        self.str[self.ptr] = value 
        print(self.str[self.ptr])
        self.ptr += 1

Dazwischen liegt ein Ausdruck, den Sie jedoch ignorieren können. Wichtig ist zunächst, dass die ptr-Position nicht voll ist. Voll, wenn ptr == Kapazität Wenn ptr> Kapazität, ist das Programm außer Kontrolle !! Sie können sehen, dass wir prüfen, ob self.ptr> = self.capa :. Wenn es nicht voll ist, setzen Sie self.str [self.ptr] = value und Push wird erfolgreich abgeschlossen. Erhöhen Sie ptr um eins, um sich auf den nächsten Push vorzubereiten. Das ist alles was wir mit Push machen.

Als nächstes kommt Pop.

stack.py


    def pop(self):
        if self.ptr <= 0:
            raise top.empty
        self.ptr -= 1
        return self.str[self.ptr]

Wenn der Zeiger ptr negativ war, Weil Sie den Boden durchbohren und die Daten in den Boden schrauben Überprüfen Sie dies vorerst mit der if-Anweisung. Ich bin sicher, einige von Ihnen haben sich hier gefragt. Nebenbei bemerkt, in der Python-Welt beginnt der Speicher nicht bei 1. Es beginnt bei 0. Es tut mir leid, dass die erste Zahl nicht gut war. 図9.PNG Wenn also ptr = 0 ist, bedeutet dies leer. Es ist leer. Wenn es nicht leer ist, dekrementieren Sie ptr wie unten gezeigt um 1. Geben Sie die abzurufenden Daten an. 図10.PNG Danach können Sie die gespeicherten Daten abrufen, indem Sie self.str [self.ptr] zurückgeben.

Nein, ich konnte die Daten mit return zurückgeben. Der angegebene Bereich ist nicht leer! ?? Ja! Das stimmt !! Bakon! (----) / ☆ (* _ *)

Tatsächlich verwaltet der Stapel die Daten an der Position von ptr. Selbst wenn Sie es nicht geleert haben, wird es beim nächsten Push automatisch neu geschrieben, oder? Wenn Sie sich also nur die Bewegung von ptr ansehen, können Sie einen Stapel erstellen. Deshalb werde ich das ganze Bild des Stapels in Eile vorbereiten.

stack.py


class top:
    class full(Exception):
        pass
    class empty(Exception):
        pass    
    
    def __init__(self,capacity:int = 10):
        self.str  = [None] * capacity
        self.capa = capacity
        self.ptr  = 0
        
    def push(self,value):
        if self.ptr >= self.capa:
            raise top.full
        self.str[self.ptr] = value 
        print(self.str[self.ptr])
        self.ptr += 1
        
    def pop(self):
        if self.ptr <= 0:
            raise top.empty
        self.ptr -= 1
        return self.str[self.ptr]

test = top()

while True:
    num = int(input("select 1.push , 2.pop : "))
    
    if num == 1 :
        s = int(input("enter data: "))
        try:
            test.push(s)
        except test.full:
            print("full!")
    elif num == 2:
        try:
            x = test.pop()
            print(x)
        except test.empty:
            print("empty!")
    else:
        break

Vielleicht ist "__ init __", push, pop der Schlüssel. Wenn Sie das wissen, Ich hoffe, Sie verstehen.

Dies ist mein erster Beitrag. Wenn also etwas fehlt oder schwer zu verstehen ist Bitte weisen Sie darauf hin !! m (_ _) m

Andere Artikel
Versuchen Sie, zwei Stapel in Python auf einem Array zu implementieren
Mindestwert für mit Python erstellte Stapel(min)Fügen Sie die Fähigkeit hinzu, zurückzukehren, aber zu drücken/pop/min ist basisch O.(1) !!

Recommended Posts

Ich habe den Stack in Python geschrieben
Ich habe die Warteschlange in Python geschrieben
Ich habe Python auf Japanisch geschrieben
Ich habe Fizz Buzz in Python geschrieben
[Python-Anfänger] Ich habe die Artikel gesammelt, die ich geschrieben habe
Ich habe den Gleitflügel in der Schöpfung geschrieben.
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Ein Memo, das ich schnell in Python geschrieben habe
Ich habe versucht, "Birthday Paradox" mit Python zu simulieren
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Ich habe eine Klasse in Python3 und Java geschrieben
Geschrieben "Einführung in die Effektüberprüfung" in Python
Ich habe versucht, die inverse Gammafunktion in Python zu implementieren
Ich möchte den Fortschritt in Python anzeigen!
Finde Fehler in Python
Stapel und Warteschlange in Python
Ich verstehe Python auf Japanisch!
Was ich in Python gelernt habe
Ich habe die Python-Quelle heruntergeladen
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich möchte R-Datensatz mit Python verwenden
[Basic Information Engineer Examination] Ich habe den Algorithmus der euklidischen Methode der gegenseitigen Teilung in Python geschrieben.
Beachten Sie, dass ich den Algorithmus der kleinsten Quadrate verstehe. Und ich habe es in Python geschrieben.
Python im Browser: Brythons Empfehlung
Speichern Sie die Binärdatei in Python
Klicken Sie in Python auf die Sesami-API
Holen Sie sich den Desktop-Pfad in Python
Ich habe die grundlegende Grammatik von Python in Jupyter Lab geschrieben
Ich habe die Grundoperation von Seaborn im Jupyter Lab geschrieben
Ich habe an der ISUCON10-Qualifikationsrunde teilgenommen!
Holen Sie sich den Skriptpfad in Python
Im Python-Befehl zeigt Python auf Python3.8
Implementieren Sie das Singleton-Muster in Python
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
Ich habe Gray Scale mit Pytorch geschrieben
Ich habe es in der Sprache Go geschrieben, um das SOLID-Prinzip zu verstehen
Klicken Sie auf die Web-API in Python
Ich mochte den Tweet mit Python. ..
Ich habe gerade das Originalmaterial für den Python-Beispielcode geschrieben
Ich habe versucht, den Prozess mit Python zu studieren
Scikit-learn kann nicht in Python installiert werden
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Untersuchen Sie die Klasse eines Objekts mit Python
Ich habe die Grundoperation von Numpy im Jupyter Lab geschrieben.
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Hostnamen in Python
Greifen Sie mit Python auf die Twitter-API zu
Suche nach Tiefenpriorität mit Stack in Python
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Beherrsche das schwache Ref-Modul in Python
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe die Berechnungszeit des in Python geschriebenen gleitenden Durchschnitts verglichen
Ich habe die Bewegung Python3 ausprobiert, die die Richtung im Koordinatensystem ändert
[Python] Ich habe die Route des Taifuns mit Folium auf die Karte geschrieben
Ich habe einen AttributeError erhalten, als ich die offene Methode in Python verspottet habe
Ich habe eine Funktion zum Laden des Git-Erweiterungsskripts in Python geschrieben
Ich habe ein Skript geschrieben, um Webseiten-Links in Python zu extrahieren
Ich habe Python 2.7 in Sakura VPS 1 GB installiert.