Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python เพื่อย้อนกลับ Stack โดยใช้ Recursion


เมื่อต้องการย้อนกลับโครงสร้างข้อมูลสแต็กโดยใช้การเรียกซ้ำ จะมีการกำหนดเมธอด 'stack_reverse' นอกเหนือจากวิธีการเพิ่มมูลค่า ลบค่า และพิมพ์องค์ประกอบของสแต็ก

ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -

ตัวอย่าง

class Stack_structure:
   def __init__(self):
      self.items = []

   def check_empty(self):
      return self.items == []

   def push_val(self, data):
      self.items.append(data)

   def pop_val(self):
      return self.items.pop()

   def print_it(self):
      for data in reversed(self.items):
         print(data)

def insert_bottom(instance, data):
   if instance.check_empty():
      instance.push_val(data)
   else:
      deleted_elem = instance.pop_val()
      insert_bottom(instance, data)
      instance.push_val(deleted_elem)

def stack_reverse(instance):
   if not instance.check_empty():
      deleted_elem = instance.pop_val()
      stack_reverse(instance)
      insert_bottom(instance, deleted_elem)

my_instance = Stack_structure()
data_list = input('Enter the elements to add to the stack: ').split()
for data in data_list:
   my_instance.push_val(int(data))

print('The reversed stack is:')
my_instance.print_it()
stack_reverse(my_instance)
print('The stack is:')
my_instance.print_it()

ผลลัพธ์

Enter the elements to add to the stack: 23 56 73 81 8 9 0
The reversed stack is:
0
9
8
81
73
56
23
The stack is:
23
56
73
81
8
9
0

คำอธิบาย

  • คลาส 'Stack_structure' ถูกสร้างขึ้นเพื่อเริ่มต้นรายการว่าง

  • วิธีการ 'check_empty' ถูกกำหนดเพื่อดูว่าสแต็กว่างเปล่าหรือไม่

  • มีการกำหนดวิธีการอื่นที่เรียกว่า "push_val" ซึ่งเพิ่มองค์ประกอบลงในสแต็ก

  • มีการกำหนดวิธีการอื่นที่ชื่อว่า 'pop_val' เพื่อลบองค์ประกอบออกจากสแต็ก

  • มีการกำหนดวิธีการชื่อ 'print_it' ที่ช่วยพิมพ์องค์ประกอบของสแต็ก

  • มีการกำหนดเมธอดที่ชื่อว่า 'insert_bottom' ซึ่งเพิ่มองค์ประกอบที่ด้านล่างของสแต็ก แทนที่จะเพิ่มไปที่ด้านบนโดยค่าเริ่มต้น

  • มีการกำหนดวิธีการอื่นที่ชื่อว่า 'stack_reverse' ซึ่งจะช่วยย้อนกลับสแต็กที่กำหนด

  • อินสแตนซ์ของ 'Stack_structure' นี้ถูกกำหนดไว้แล้ว

  • องค์ประกอบของสแต็กถูกพรากไปจากผู้ใช้

  • มีการทำซ้ำและมีการเรียกใช้เมธอดเพื่อเพิ่มมูลค่าให้กับสแต็กและพิมพ์บนคอนโซล

  • ตอนนี้ 'stack_reverse' ถูกเรียกในรายการนี้

  • 'print_it' ถูกเรียกเพื่อแสดงสแต็กที่กลับด้านบนคอนโซล