Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để triển khai một ngăn xếp bằng cách sử dụng danh sách được liên kết

Khi bắt buộc phải triển khai cấu trúc dữ liệu ngăn xếp bằng danh sách được liên kết, phương pháp để thêm (giá trị đẩy) phần tử vào danh sách được liên kết và phương pháp xóa (giá trị bật) các phần tử của danh sách liên kết được xác định.

Dưới đây là một minh chứng cho điều tương tự -

Ví dụ

class Node:
   def __init__(self, data):
      self.data = data
      self.next = None

class Stack_structure:
   def __init__(self):
      self.head = None

   def push_val(self, data):
      if self.head is None:
         self.head = Node(data)
      else:
         newNode = Node(data)
         newNode.next = self.head
         self.head = newNode

   def pop_val(self):
      if self.head is None:
         return None
      else:
         del_Val = self.head.data
         self.head = self.head.next
         return del_Val

my_instance = Stack_structure()
while True:
   print('push <value>')
   print('pop')
   print('quit')
   my_input = input('What action would you like to perform ? ').split()

   operation = my_input[0].strip().lower()
   if operation == 'push':
      my_instance.push_val(int(my_input[1]))
   elif operation == 'pop':
      del_Val = my_instance.pop_val()
      if del_Val is None:
         print('The stack is empty.')
      else:
         print('The deleted value is : ', int(del_Val))
   elif operation == 'quit':
      break

Đầu ra

push <value>
pop
quit
What action would you like to perform ? push 56
push <value>
pop
quit
What action would you like to perform ? push 78
push <value>
pop
quit
What action would you like to perform ? push 90
push <value>
pop
quit
What action would you like to perform ? pop
The deleted value is : 90
push <value>
pop
quit
What action would you like to perform ? quit

Giải thích

  • Lớp 'Node' được tạo.

  • Một lớp ‘Stack_ Structure’ khác với các thuộc tính bắt buộc được tạo.

  • Nó có chức năng ‘init’ được sử dụng để khởi tạo phần tử đầu tiên, tức là ‘head’ thành ‘None’.

  • Phương thức có tên ‘push_val’ được xác định, giúp thêm giá trị vào ngăn xếp.

  • Một phương thức khác có tên là ‘pop_val’ được xác định, giúp xóa một giá trị khỏi đầu ngăn xếp và trả về giá trị đã xóa.

  • Một phiên bản của ‘Stack_ Structure’ được tạo.

  • Ba tùy chọn được đưa ra, chẳng hạn như "đẩy", "bật" và "thoát".

  • Tùy chọn 'push' thêm một giá trị cụ thể vào ngăn xếp.

  • Tùy chọn 'pop' sẽ xóa phần tử trên cùng khỏi ngăn xếp.

  • Tùy chọn 'thoát' không có trong vòng lặp.

  • Dựa trên đầu vào / lựa chọn của người dùng, các hoạt động tương ứng được thực hiện.

  • Đầu ra này được hiển thị trên bảng điều khiển.