Trong hướng dẫn này, chúng tôi sẽ tạo ra một ngăn xếp trong từng bước của Python. Ngăn xếp là cấu trúc dữ liệu LIFO (lần đầu tiên).
Để tạo một ngăn xếp trong Python, bạn có thể sử dụng một lớp với một thuộc tính duy nhất của danh sách loại. Các phần tử của ngăn xếp được lưu trữ trong danh sách bằng phương pháp đẩy và được truy xuất bằng phương pháp POP. Các phương pháp bổ sung cho phép có được kích thước của ngăn xếp và giá trị của phần tử ở đầu ngăn xếp.
Chúng tôi sẽ xây dựng một lớp tùy chỉnh thực hiện các hoạt động chung được cung cấp bởi cấu trúc dữ liệu ngăn xếp.
Hãy bắt đầu xây dựng nó!
- Cách bắt đầu xây dựng lớp cho ngăn xếp
- Sử dụng các hoạt động đẩy và pop trên ngăn xếp của chúng tôi
- Xử lý lỗi khi sử dụng Pop trên một ngăn xếp trống
- Lấy số lượng các yếu tố trong ngăn xếp Python
- Lấy lại giá trị của phần tử ở đầu ngăn xếp
- Sự kết luận
Cách bắt đầu xây dựng lớp cho ngăn xếp
Sử dụng các hoạt động đẩy và pop trên ngăn xếp của chúng tôi
Xử lý lỗi khi sử dụng Pop trên một ngăn xếp trống
Lấy số lượng các yếu tố trong ngăn xếp Python
Lấy lại giá trị của phần tử ở đầu ngăn xếp
Sự kết luận
Cấu trúc dữ liệu chúng tôi sẽ sử dụng bên trong lớp của chúng tôi để tạo ngăn xếp Python là một danh sách.
class Stack: def __init__(self): self.elements = []Lớp sẽ hạn chế loại hoạt động có thể được thực hiện so với danh sách xem xét rằng một ngăn xếp không cho phép tất cả các hoạt động có thể có với danh sách Python.push and pop:
- Khi làm việc với một danh sách, bạn có quyền tự do thêm và xóa các yếu tố ở đầu ở giữa và ở cuối danh sách. Điều tương tự không áp dụng cho một ngăn xếp. adds an element to the top of the stack.
- Khi làm việc với Stack & NBSP; bạn chỉ có thể thêm một phần tử vào đỉnh của ngăn xếp và loại bỏ phần tử khỏi đỉnh của ngăn xếp. Đó là bởi vì theo định nghĩa, một ngăn xếp là cấu trúc dữ liệu đầu tiên vào lần cuối. removes the last element from the top of the stack.
Hãy bắt đầu bằng cách tạo một lớp gọi là Stack có thuộc tính danh sách có tên là các phần tử.
def push(self, data): self.elements.append(data)Chất xây dựng của lớp ngăn xếp khởi tạo các phần tử thuộc tính vào một danh sách trống.
def pop(self): return self.elements.pop()Hai hoạt động đầu tiên chúng tôi muốn hỗ trợ trong ngăn xếp của chúng tôi là PUSP VÀ POP:
Sử dụng các hoạt động đẩy và pop trên ngăn xếp của chúng tôi
Xử lý lỗi khi sử dụng Pop trên một ngăn xếp trống
class Stack: def __init__(self): self.elements = [] def push(self, data): self.elements.append(data) def pop(self): return self.elements.pop()Lấy số lượng các yếu tố trong ngăn xếp Python
stack = Stack()print(stack.__dict__)[output]{'elements': []}Lấy lại giá trị của phần tử ở đầu ngăn xếp
Sự kết luận
stack.push(3)stack.push('test')print(stack.pop())print(stack.pop())[output]test3
Cấu trúc dữ liệu chúng tôi sẽ sử dụng bên trong lớp của chúng tôi để tạo ngăn xếp Python là một danh sách.
Lớp sẽ hạn chế loại hoạt động có thể được thực hiện so với danh sách xem xét rằng một ngăn xếp không cho phép tất cả các hoạt động có thể có với danh sách Python.: notice that the first element returned by pop() is the string test that is the second element we have pushed to the stack. Thats because of the LIFO nature of the stack.
Xử lý lỗi khi sử dụng Pop trên một ngăn xếp trống
Lấy số lượng các yếu tố trong ngăn xếp Python
Lấy lại giá trị của phần tử ở đầu ngăn xếp
print(stack.pop())Sự kết luận
Traceback (most recent call last): File "/opt/Python/Tutorials/create_stack.py", line 17, in print(stack.pop()) File "/opt/Python/Tutorials/create_stack.py", line 9, in pop return self.elements.pop() IndexError: pop from empty listCấu trúc dữ liệu chúng tôi sẽ sử dụng bên trong lớp của chúng tôi để tạo ngăn xếp Python là một danh sách.
Lớp sẽ hạn chế loại hoạt động có thể được thực hiện so với danh sách xem xét rằng một ngăn xếp không cho phép tất cả các hoạt động có thể có với danh sách Python.
Khi làm việc với một danh sách, bạn có quyền tự do thêm và xóa các yếu tố ở đầu ở giữa và ở cuối danh sách. Điều tương tự không áp dụng cho một ngăn xếp.
Khi làm việc với Stack & NBSP; bạn chỉ có thể thêm một phần tử vào đỉnh của ngăn xếp và loại bỏ phần tử khỏi đỉnh của ngăn xếp. Đó là bởi vì theo định nghĩa, một ngăn xếp là cấu trúc dữ liệu đầu tiên vào lần cuối.
Hãy bắt đầu bằng cách tạo một lớp gọi là Stack có thuộc tính danh sách có tên là các phần tử.
def pop(self): if self.elements: return self.elements.pop() else: return NoneChất xây dựng của lớp ngăn xếp khởi tạo các phần tử thuộc tính vào một danh sách trống.
stack = Stack()print(stack.pop())Hai hoạt động đầu tiên chúng tôi muốn hỗ trợ trong ngăn xếp của chúng tôi là PUSP VÀ POP:
Lấy số lượng các yếu tố trong ngăn xếp Python
Lấy lại giá trị của phần tử ở đầu ngăn xếp
Sự kết luận
def push(self, data): self.elements.append(data)0Cấu trúc dữ liệu chúng tôi sẽ sử dụng bên trong lớp của chúng tôi để tạo ngăn xếp Python là một danh sách.
def push(self, data): self.elements.append(data)1Lớp sẽ hạn chế loại hoạt động có thể được thực hiện so với danh sách xem xét rằng một ngăn xếp không cho phép tất cả các hoạt động có thể có với danh sách Python.
Khi làm việc với một danh sách, bạn có quyền tự do thêm và xóa các yếu tố ở đầu ở giữa và ở cuối danh sách. Điều tương tự không áp dụng cho một ngăn xếp.
def push(self, data): self.elements.append(data)2Khi làm việc với Stack & NBSP; bạn chỉ có thể thêm một phần tử vào đỉnh của ngăn xếp và loại bỏ phần tử khỏi đỉnh của ngăn xếp. Đó là bởi vì theo định nghĩa, một ngăn xếp là cấu trúc dữ liệu đầu tiên vào lần cuối.call a class method from another method within the same class.
Hãy bắt đầu bằng cách tạo một lớp gọi là Stack có thuộc tính danh sách có tên là các phần tử.
Chất xây dựng của lớp ngăn xếp khởi tạo các phần tử thuộc tính vào một danh sách trống.
Hai hoạt động đầu tiên chúng tôi muốn hỗ trợ trong ngăn xếp của chúng tôi là PUSP VÀ POP:Đẩy thêm một phần tử vào đỉnh của ngăn xếp.
Lấy lại giá trị của phần tử ở đầu ngăn xếp
Sự kết luận
Cấu trúc dữ liệu chúng tôi sẽ sử dụng bên trong lớp của chúng tôi để tạo ngăn xếp Python là một danh sách.
Hoạt động lấy phần tử ở đầu ngăn xếp được gọi là Peek.
def push(self, data): self.elements.append(data)4Phương pháp này là siêu đơn giản. Chúng tôi đang sử dụng một chỉ số tiêu cực để có được phần tử cuối cùng trong danh sách các phần tử về cơ bản là phần tử ở đầu ngăn xếp của chúng tôi.
def push(self, data): self.elements.append(data)5Phương pháp thực hiện chính xác những gì chúng tôi muốn làm.
Sự kết luận
Trong hướng dẫn này, chúng tôi đã thấy cách thực hiện một ngăn xếp trong từng bước của Python bằng cách sử dụng một lớp tùy chỉnh.
Chúng tôi đã triển khai năm hoạt động cho ngăn xếp tùy chỉnh của chúng tôi:
- Đẩy: Để thêm một phần tử vào đỉnh của ngăn xếp.: to add an element to the top of the stack.
- POP: Để truy xuất phần tử ở đầu ngăn xếp.: to retrieve the element at the top of the stack.
- Kích thước: Để có được kích thước của ngăn xếp.: to get the size of the stack.
- Trống: để kiểm tra xem ngăn xếp có trống không.: to check if the stack is empty.
- PEEK: Để có được giá trị của phần tử ở đầu ngăn xếp.: to get the value of the element at the top of the stack.
Tôi hy vọng bạn thấy nó hữu ích 🙂
Bài viết liên quan:
Tôi là một nhà lãnh đạo công nghệ, kỹ sư phần mềm và huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành một nhà phát triển siêu!