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

โปรแกรมสร้างคิวที่เพิ่ม/ลบได้จากหน้า กลาง และหลังใน Python

ปัญหา

สร้างคิวที่รองรับการเพิ่ม/ลบข้อมูลที่หน้า (front), กลาง (middle), และหลัง (back) พร้อมฟังก์ชันแสดงคิว

ตัวอย่าง

push_back(10), push_back(20), push_front(30), push_middle(40), push_front(50) → show: [50,30,40,10,20] pop_back → [50,30,40,10] pop_front → [30,40,10] pop_middle → [30,10]

ขั้นตอนการแก้ปัญหา

  1. ใช้ลิสต์ array แทนคิว
  2. push_front(val): array.insert(0, val)
  3. push_middle(val): array.insert(len(array)//2, val)
  4. push_back(val): array.append(val)
  5. pop_front(): ลบและคืน array.pop(0) (ถ้าว่างคืน -1)
  6. pop_middle(): ลบและคืน array.pop((len(array)-1)//2)
  7. pop_back(): ลบและคืน array.pop()
  8. show_queue(): คืน array

การนำไปใช้งาน (Python)

class Solution:
    def __init__(self):
        self.array = []
    def push_from_front(self, value):
        self.array.insert(0, value)
    def push_from_middle(self, value):
        self.array.insert(len(self.array) // 2, value)
    def push_from_back(self, value):
        self.array.append(value)
    def pop_from_front(self):
        return (self.array or [-1]).pop(0)
    def pop_from_middle(self):
        return (self.array or [-1]).pop((len(self.array) - 1) // 2)
    def pop_from_back(self):
        return (self.array or [-1]).pop()
    def show_queue(self):
        return self.array

ob = Solution()
ob.push_from_back(10)
ob.push_from_back(20)
ob.push_from_front(30)
ob.push_from_middle(40)
ob.push_from_front(50)
print(ob.show_queue())
ob.pop_from_back()
print(ob.show_queue())
ob.pop_from_front()
print(ob.show_queue())
ob.pop_from_middle()
print(ob.show_queue())

อินพุต

ob = Solution() ob.push_from_back(10) ob.push_from_back(20) ob.push_from_front(30) ob.push_from_middle(40) ob.push_from_front(50) print(ob.show_queue()) ob.pop_from_back() print(ob.show_queue()) ob.pop_from_front() print(ob.show_queue()) ob.pop_from_middle() print(ob.show_queue())

เอาต์พุต

[50, 30, 40, 10, 20] [50, 30, 40, 10] [30, 40, 10] [30, 10]