Timbunan - Ia ialah bekas storan yang menyokong pengambilan melalui pesanan masuk terakhir, keluar dahulu ( LIFO). Tindanan mungkin merupakan bekas yang sesuai untuk digunakan apabila pesanan pengambilan tidak penting sama sekali, seperti semasa memproses kerja kelompok.
Contohnya, pertimbangkan timbunan pinggan yang digunakan di kafetaria: susunan pinggan dikeluarkan daripada timbunan adalah kebalikan susunan piring itu ditambahkan, kerana hanya pinggan atas sahaja boleh diakses .
Operasi INSERT pada tindanan sering dipanggil PUSH dan operasi DELETE, yang tidak mengambil hujah elemen, sering dipanggil POP.
Tolak (x,s): Masukkan item x di bahagian atas tindanan s.
Pop : Kembalikan (dan keluarkan) item teratas tindanan s.
Makanan yang dimasukkan ke dalam peti sejuk saya biasanya keluar dengan cara yang sama, walaupun terdapat insentif tarikh luput. Secara algoritma, LIFO cenderung berlaku semasa melaksanakan algoritma rekursif.
Aplikasi Tindanan -
Laksanakan Tindanan Menggunakan Tatasusunan -
class Stack: def __init__(self): #Initializes an empty stack self.stack = [] def isEmpty(self) -> bool: #Returns True if the stack is empty, False otherwise. return len(self.stack) == 0 def push(self, item) -> None: #Pushes an item onto the stack. self.stack.append(item) def pop(self): #Removes and returns the top item from the stack. if self.isEmpty(): return None return self.stack.pop() def peek(self): #Returns the top item from the stack without removing it. if self.isEmpty(): return None return self.stack[-1]
Baris gilir - Ia ialah bekas storan yang menyokong pengambilan semula dengan perintah masuk dahulu, keluar dahulu (FIFO). Kami memanggil operasi INSERT pada baris gilir ENQUEUE, dan kami memanggil operasi DELETE DEQUEUE. Seperti POP operasi tindanan, DEQUEUE tidak mengambil hujah elemen. Tindanan dan baris gilir ialah set dinamik yang mana elemen dialih keluar daripada set oleh operasi DELETE dipratakrifkan.
Enqueue(x,q): Sisipkan item x di belakang baris gilir q.
Dequeue(q): Kembalikan (dan alih keluar) item hadapan daripada baris q.
Barisan mempunyai kepala dan ekor.
Apabila elemen dimasukkan ke dalam baris gilir, ia mengambil tempat di bahagian belakang baris gilir, sama seperti pelanggan yang baru tiba mengambil tempat di hujung baris.
Elemen yang dibatalkan sentiasa berada di kepala barisan, seperti pelanggan di kepala barisan, yang telah menunggu paling lama.
Aplikasi Baris Gilir -
Laksanakan Baris Menggunakan Tatasusunan-
class Stack: def __init__(self): #Initializes an empty stack self.stack = [] def isEmpty(self) -> bool: #Returns True if the stack is empty, False otherwise. return len(self.stack) == 0 def push(self, item) -> None: #Pushes an item onto the stack. self.stack.append(item) def pop(self): #Removes and returns the top item from the stack. if self.isEmpty(): return None return self.stack.pop() def peek(self): #Returns the top item from the stack without removing it. if self.isEmpty(): return None return self.stack[-1]
Laksanakan Baris Gilir menggunakan Tindanan -
class MyQueue: def __init__(self): # Store elements self.queue = [] # A pointer to indicate the start position self.p_start = 0 def enQueue(self, x): #Insert an element into the queue. self.queue.append(x) return True # Return True if the operation is successful def deQueue(self): #Delete an element from the queue. if self.isEmpty(): return False self.p_start += 1 return True #Return True if the operation is successful def Front(self): #Get the front item from the queue. if not self.isEmpty(): return self.queue[self.p_start] return None # Return None if the queue is empty def isEmpty(self): #Checks whether the queue is empty or not return self.p_start >= len(self.queue)
Laksanakan Tindanan menggunakan Baris Gilir -
class MyQueue: def __init__(self): self.stack_1 = [] # Main stack for enqueue operations self.stack_2 = [] # Temporary stack for dequeue operations self.front = None # Pushes element x to the back of the queue. def push(self, x): # Move all elements from stack1 to stack 2 to reverse their order while self.stack_1: self.stack_2.append(self.stack_1.pop()) self.stack_2.append(x) # Move all elements back from stack2 to stack 1 as a queue while self.stack_2: self.stack_1.append(self.stack_2.pop()) # Removes the element from the front of the queue and returns it def pop(self): return self.stack_1.pop() # Returns the element at the front of the queue def peek(self): return self.stack_1[-1] # Returns true if the queue is empty, false otherwise def empty(self): return not self.stack_1
Atas ialah kandungan terperinci Timbunan dan Baris Gilir || Python || Struktur Data dan Algoritma. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!