Python - Ngăn xếp
Trong từ điển tiếng Anh, từ ngăn xếp có nghĩa là sắp xếp các đối tượng trên khác. Nó giống như cách bộ nhớ được cấp phát trong cấu trúc dữ liệu này. Nó lưu trữ các phần tử dữ liệu theo cách tương tự như một loạt các đĩa được lưu trữ chồng lên nhau trong nhà bếp. Vì vậy, ngăn xếp dữ liệu strcuture cho phép các hoạt động ở một đầu mà có thể được gọi là đỉnh của ngăn xếp. Chúng ta có thể thêm các phần tử hoặc loại bỏ các phần tử chỉ tạo thành này trong ngăn xếp.
Trong một ngăn xếp, phần tử được chèn cuối cùng theo thứ tự sẽ xuất hiện đầu tiên vì chúng ta chỉ có thể xóa khỏi phần trên cùng của ngăn xếp. Tính năng này được gọi là tính năng Last in First Out (LIFO). Các hoạt động thêm và bớt các phần tử được gọi làPUSH và POP. Trong chương trình sau, chúng tôi thực hiện nó dưới dạng các hàm thêm và bớt. Chúng tôi loại bỏ một danh sách trống và sử dụng các phương thức append () và pop () để thêm và xóa các phần tử dữ liệu.
PUSH vào một ngăn xếp
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())
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
Tue
Thu
POP từ một ngăn xếp
Như chúng ta biết, chúng ta chỉ có thể xóa phần tử dữ liệu hàng đầu khỏi ngăn xếp, chúng ta triển khai một chương trình python thực hiện điều đó. Hàm loại bỏ trong chương trình sau đây trả về phần tử cao nhất. chúng tôi kiểm tra phần tử trên cùng bằng cách tính toán kích thước của ngăn xếp trước rồi sử dụng phương thức pop () tích hợp sẵn để tìm ra phần tử trên cùng nhất.
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())
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
Thu
Wed