เวลาใส่ของเข้าไปในกล่อง
- ถ้าในกล่องไม่ว่าง และของยังไม่เต็มกล่อง
- ของอันใหม่ จะอยู่ข้างบน ของอันเก่า
- ถ้าในกล่องว่าง
- ก็ใส่ลงไปในกล่องปกติ
- ถ้าในกล่องไม่ว่าง และของเต็มกล่องแล้ว
- จะไม่ใส่ของลงในกล่องอีก
- ถ้าในกล่องไม่ว่าง
- เอาของจากด้านบนสุดออก
- ถ้าในกล่องว่าง
- ไม่ต้องเอาของออกแล้ว
มาเขียนโค้ดกันเถอะ
ใน python list จะไม่มีจำกัดจำนวน elemen ที่อยู่ใน list เอาไว้ ทำให้ stacks ก็จะเพิ่มขึ้นเรื่อยๆได้ แบบไม่มีจำกัดจำนวน element ถ้าไม่ได้เขียนกำหนดอะไรเพิ่มเติม (การเขียนกำหนดจำนวนเพิ่มเติมจะเอาไว้ต่อในบทความหน้า)
ในการ Push จะใช้ method append() ในการดำเนินการ (เอามาต่อท้าย list)
ในการ Pop จะใช้ method pop() ในการดำเนินการ (เอาตัวท้ายสุดของ list ออก)
โค้ด: เลือกทั้งหมด
# using a list as a stack
print('Stack had been created!')
stack = [] # create a empty stack
print(f'Stack = {stack}')
print()
# pushing
stack.append('math book')
print(f'A |{stack[-1]}| had been pushed!')
print(f'Stack = {stack}')
print()
stack.append('science book')
print(f'A |{stack[-1]}| had been pushed!')
print(f'Stack = {stack}')
print()
stack.append('comic book')
print(f'A |{stack[-1]}| had been pushed!')
print(f'Stack = {stack}')
print()
# popping
print(f'A |{stack.pop()}| had been popped!') # pop the last element
print(f'Stack = {stack}')
print()
โค้ด: เลือกทั้งหมด
stack = [] # create a empty stack
โค้ด: เลือกทั้งหมด
stack.append('math book')
โค้ด: เลือกทั้งหมด
stack.append('science book')
โค้ด: เลือกทั้งหมด
stack.append('comic book')
โค้ด: เลือกทั้งหมด
stack.pop()
ผลลัพธ์ของโปรแกรม ตอนสุดท้ายจะเหลือหนังสือ แค่ ["math book", "science book"] เพราะได้เอา comic book ออก โดย method pop()
สรุป
ในการทำ stack เราไม่ได้ เปลี่ยนเป็น type หรือ class อื่น ไม่เหมือนอย่าง การทำ Queues โดยใช้ list ในบทความนี้ใช้ Datatype เป็น list และใช้ method ของ list ไม่มีอะไรพิเศษหรือแปลกใหม่ (ถ้าไม่มีการจำกัดจำนวน element ใน list ซึ่งจะต่อในบทความหน้า)
อ้างอิง
https://www.mindphp.com/forums/viewtopic.php?f=29&t=47306
https://www.mindphp.com/%E0%B8%9A%E0%B8%97%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%AD%E0%B8%AD%E0%B8%99%E0%B9%84%E0%B8%A5%E0%B8%99%E0%B9%8C/83-python/3402-%E0%B8%95%E0%B8%B1%E0%B8%A7%E0%B9%81%E0%B8%9B%E0%B8%A3%E0%B8%8A%E0%B8%99%E0%B8%B4%E0%B8%94-list.html
https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/2203-data-type-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3.html
https://docs.python.org/3/tutorial/datastructures.html#using-lists-as-stacks