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