สมมติว่า เราถูกขอให้ใช้คิวที่สามารถผลักและแสดงค่าที่ด้านหน้า ตรงกลาง และด้านหลัง
เราต้องใช้คู่ของฟังก์ชันเพื่อ push และ pop สำหรับทั้งสามกรณี เราต้องใช้ฟังก์ชันอื่นที่แสดงคิวเต็มในเวลาที่กำหนด
ดังนั้นหากอินพุตเป็นแบบ
push_from_back(10)
push_from_back(20)
push_from_front(30)
push_from_middle(40)
push_from_front(50)
show_queue()
pop_from_back()
show_queue()
pop_from_front()
show_queue()
pop_from_middle()
show_queue(),
จากนั้นผลลัพธ์จะเป็น [50, 30, 40, 10, 20
[50, 30, 40, 10]
[30, 40, 10]
[30, 10]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
array :=การแสดงอาร์เรย์ของคิว
-
กำหนดฟังก์ชัน push_from_front() มันจะมีค่า
-
ใส่ค่าลงในอาร์เรย์ที่ตำแหน่ง 0
-
-
กำหนดฟังก์ชัน push_from_middle() มันจะมีค่า
-
ใส่ค่าลงในอาร์เรย์ที่ตำแหน่ง (ขนาดของอาร์เรย์) / 2
-
-
กำหนดฟังก์ชัน push_from_back() มันจะมีค่า
-
แทรกค่าที่ส่วนท้ายของอาร์เรย์
-
-
กำหนดฟังก์ชัน pop_from_front() .
-
ลบและส่งคืนองค์ประกอบแรกจากอาร์เรย์หากไม่ว่างเปล่า
-
-
กำหนดฟังก์ชัน pop_from_middle() .
-
ลบและส่งคืนองค์ประกอบที่ตำแหน่ง (ความยาวของอาร์เรย์ - 1) /2
-
-
กำหนดฟังก์ชัน pop_from_back() .
-
ลบและส่งคืนองค์ประกอบสุดท้ายจากอาร์เรย์
-
-
กำหนดฟังก์ชัน show_queue() การดำเนินการนี้จะไม่มีการป้อนข้อมูล
-
กลับอาร์เรย์
-
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
คลาส 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 หรือ [-1]).pop( 0) def pop_from_middle(self):return (self.array หรือ [-1]).pop((len(self.array) - 1) // 2) def pop_from_back(self):return (self.array หรือ [-) 1]).pop() def show_queue(self):return self.arrayob =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 =โซลูชัน()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]