Python - สแต็ค
ในพจนานุกรมภาษาอังกฤษคำว่า stack หมายถึงการจัดเรียงวัตถุทับอีกชิ้นหนึ่ง เป็นวิธีเดียวกับการจัดสรรหน่วยความจำในโครงสร้างข้อมูลนี้ มันจัดเก็บองค์ประกอบข้อมูลในลักษณะที่คล้ายกันเนื่องจากจานจำนวนมากถูกเก็บไว้เหนืออีกชิ้นหนึ่งในห้องครัว ดังนั้นการจัดเรียงข้อมูลแบบสแต็กจึงช่วยให้การดำเนินการที่ปลายด้านหนึ่งซึ่งเรียกได้ว่าอยู่บนสุดของสแต็ก เราสามารถเพิ่มองค์ประกอบหรือลบองค์ประกอบในรูปแบบนี้จากสแต็กเท่านั้น
ในสแต็กองค์ประกอบที่ไม่ถูกเรียงลำดับสุดท้ายจะปรากฏขึ้นก่อนเนื่องจากเราสามารถลบออกจากด้านบนของสแต็กเท่านั้น คุณลักษณะดังกล่าวเรียกว่าคุณลักษณะ Last in First Out (LIFO) การดำเนินการเพิ่มและลบองค์ประกอบเรียกว่าPUSH และ POP. ในโปรแกรมต่อไปนี้เราใช้เป็นฟังก์ชันเพิ่มและลบ เราจัดรายการว่างและใช้วิธีการผนวก () และป๊อป () เพื่อเพิ่มและลบองค์ประกอบข้อมูล
ผลักเข้าไปในกอง
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())
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังต่อไปนี้:
Tue
Thu
POP จากกอง
ดังที่เราทราบดีว่าเราสามารถลบองค์ประกอบข้อมูลส่วนบนสุดออกจากสแต็กได้เท่านั้นเราจึงใช้โปรแกรม python ซึ่งทำเช่นนั้น ฟังก์ชันลบในโปรแกรมต่อไปนี้จะส่งกลับองค์ประกอบส่วนใหญ่บนสุด เราตรวจสอบองค์ประกอบด้านบนโดยคำนวณขนาดของสแต็กก่อนจากนั้นใช้เมธอด pop () ในตัวเพื่อค้นหาองค์ประกอบส่วนใหญ่อันดับต้น ๆ
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())
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังต่อไปนี้:
Thu
Wed