Guten Abend Erhalten Sie weiterhin verschiedene Ratschläge von allen Zwei Wochen vergehen.
Ich danke dir sehr. m (_ _) m
Bereiten Sie zunächst einen Stapel vor, ändern Sie ihn und stellen Sie ihn in die Warteschlange Ich werde einen Ansatz wählen.
stack.py
class Stack:
class full(Exception):
pass
def __init__(self,size):
#Körper stapeln
self.str = []
#Geben Sie die Anzahl der Daten an, die gestapelt werden können
self.size = size
def push(self,value):
#Körper stapeln>Ausnahmebehandlung für die angegebene Anzahl von Daten
if len(self.str) >= self.size:
raise Stack.full
#Drücken Sie, wenn es kein Problem gibt
self.str.append(value)
def pop(self):
print(self.str.pop())
def view(self):
print(self.str)
x = int(input("stack size is "))
test = Stack(x)
while True:
num = int(input("1.push 2.pop: "))
if num == 1:
x = int(input("push data is "))
try:#Normale Verarbeitung
test.push(x)
test.view()
except:#Ausnahmebehandlung
print("Full!")
elif num == 2:
try:#Normale Verarbeitung
test.pop()
test.view()
except:#Ausnahmebehandlung
print("Empty!")
else:
break
Nein, es ist eine Beschreibung, an die ich vor zwei Wochen nicht denken konnte (; ´ ・ ω ・) Wie bringen Sie es von hier aus in die Warteschlange? Was war überhaupt der Unterschied zwischen einem Stapel und einer Warteschlange? .. Grundsätzlich ist die Bewegung des Pop anders. Wie in der Abbildung gezeigt, werden im Fall einer Warteschlange die zuerst gespeicherten Daten herausgenommen. Wenn Sie zufällig pushen / popen, wird der Inhalt durcheinander gebracht Ich weiß nicht, wo die ersten Daten sind.
Als Gegenmaßnahme gibt es die Idee des Ringpuffers. Die Warteschlange wird realisiert, indem verwaltet wird, wo sich die erste befindet. .. .. Ich benutze Python Ist es nicht einfach ?? ??
Lassen Sie uns zunächst die Natur des Pops untersuchen.
test.py
num = [3,2,1]
for i in range(3):
print(f"num[{i}] = {num[i]}")
##Ausführungsergebnis##
#num[0] = 3#
#num[1] = 2#
#num[2] = 1#
############
Lassen Sie uns Pop in setzen. Ich möchte mich anstellen, also setze ich es auf pop (0). Lassen Sie uns die ersten Daten abrufen.
test.py
num = [3,2,1]
num.pop(0)
for i in range(2):
print(f"num[{i}] = {num[i]}")
##Ausführungsergebnis##
#num[0] = 2#
#num[1] = 1#
############
[Wand] * ゚) Hmm? Pop die erste Zahl [0], das heißt, nehmen Sie es heraus, Infolge des Löschens sind die verbleibenden Elemente linksbündig.
Das ist richtig, die Elemente, die nach dem Löschen des Anfangs verbleiben, sind Es wird auch von 0 neu angeordnet. Was ist, wenn Sie es selbst tun, brauchen Sie keinen Ringpuffer !?
Die Warteschlange ist im Grunde die gleiche wie der Stapel, der Daten abruft. Sie müssen nur einmal pro Adresse schreiben. Daher definiert pop () im obigen Stapel die Beschreibung, die vom Ende extrahiert werden muss Wenn Sie zu pop (0) wechseln, der Beschreibung, die immer von Anfang an herausgenommen wird, handelt es sich um eine Warteschlange.
Queue??.py
class Stack:
class full(Exception):
pass
def __init__(self,size):
self.str = []
self.size = size
def push(self,value):
if len(self.str) >= self.size:
raise Stack.full
self.str.append(value)
def pop(self):
print(self.str.pop(0)) #Nur hier ändern!!Vorher ändern) pop()Nach der veränderung) pop(0)
def view(self):
print(self.str)
x = int(input("stack size is "))
test = Stack(x)
while True:
num = int(input("1.push 2.pop: "))
if num == 1:
x = int(input("push data is "))
try:
test.push(x)
test.view()
except:
print("Full!")
elif num == 2:
try:
test.pop()
test.view()
except:
print("Empty!")
else:
break
Unten sind die Ausführungsergebnisse.
push data is 4 #Drücken Sie 4
[1, 2, 3, 4] #Speicherinhalt nach Push
1.push 2.pop: 2#2.POP wählen
1 #str[0]1 in Pop gespeichert
[2, 3, 4] #Speicherinhalt nach Pop
1.push 2.pop: 2#2.POP wählen
2 #str[0]1 in Pop gespeichert
[3, 4] #Speicherinhalt nach Pop
1.push 2.pop: 2
3
[4]
1.push 2.pop: 2
4
[]
1.push 2.pop: 2
Empty!
Mit dieser Art von Gefühl konnte ich das Stichwort mit Leichtigkeit erkennen. Hmmm, aber mache einen Linkpuffer richtig und erkläre Ich finde, es ist besser für mich, es anzuziehen. Okay, lass es uns tun! !! Irgendwann mal. ..
Recommended Posts