เมื่อจำเป็นต้องใช้โครงสร้างข้อมูลสแต็กโดยใช้รายการที่เชื่อมโยง วิธีการเพิ่มองค์ประกอบ (ค่าพุช) ในรายการที่เชื่อมโยง และวิธีการลบ (ค่าป๊อป) องค์ประกอบของรายการที่เชื่อมโยงจะถูกกำหนด
ด้านล่างนี้เป็นการสาธิตสำหรับสิ่งเดียวกัน -
ตัวอย่าง
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 ผลลัพธ์
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
คำอธิบาย
-
สร้างคลาส "โหนด" แล้ว
-
สร้างคลาส "Stack_structure" อีกคลาสที่มีแอตทริบิวต์ที่จำเป็น
-
มีฟังก์ชัน 'init' ที่ใช้ในการเริ่มต้นองค์ประกอบแรก นั่นคือ 'head' เป็น 'None'
-
มีการกำหนดเมธอดชื่อ 'push_val' ซึ่งช่วยเพิ่มมูลค่าให้กับสแต็ก
-
มีการกำหนดวิธีการอื่นที่ชื่อว่า 'pop_val' ซึ่งช่วยลบค่าออกจากด้านบนของสแต็กและส่งกลับค่าที่ถูกลบ
-
อินสแตนซ์ของ 'Stack_structure' ถูกสร้างขึ้น
-
มีสามตัวเลือกให้เลือก เช่น "ดัน" "ป๊อป" และ "ออก"
-
ตัวเลือก 'ดัน' จะเพิ่มค่าเฉพาะให้กับสแต็ก
-
ตัวเลือก "ป๊อป" จะลบองค์ประกอบด้านบนสุดออกจากสแต็ก
-
ตัวเลือก 'ออก' หลุดออกมาจากวง
-
ขึ้นอยู่กับอินพุต/ตัวเลือกโดยผู้ใช้ การดำเนินการตามลำดับจะดำเนินการ
-
เอาต์พุตนี้จะแสดงบนคอนโซล