ในบทความนี้ เราจะเรียนรู้เกี่ยวกับโครงสร้าง Stack &Queue ใน Python 3.x หรือก่อนหน้านี้ เราจะพูดถึงการทำงานและการปรับเปลี่ยนโครงสร้างข้อมูลเหล่านี้ -
ซึ่งรวมถึง −
- การดำเนินการแทรก (พุช, เข้าคิว)
- การดำเนินการลบ (ป๊อป ดีคิว)
- การแสดง / การดำเนินการตามขวาง
ข้อกำหนดเบื้องต้น :รายการและรายการการดำเนินงาน
โครงสร้างข้อมูลที่เกี่ยวข้อง :การจัดการรายการ
รูปภาพที่เกี่ยวข้อง
กอง
ในสแต็ก ออบเจ็กต์จะถูกจัดเก็บทับกัน และอ็อบเจ็กต์เหล่านี้จะถูกลบออกในลำดับย้อนกลับของการมาถึง เช่น ปฏิบัติตามแนวคิด LIFO LIFO หมายถึงการจัดประเภท Last in First Out ตามโครงสร้างข้อมูล Stack
การดำเนินงานบนกอง −
- การเติม / การต่อท้ายองค์ประกอบ:สิ่งนี้จะเพิ่มขนาดสแต็กตามจำนวนรายการที่เพิ่ม และการเพิ่มจะเกิดขึ้นที่ด้านบนสุดของสแต็ก
- การลบ / การลบองค์ประกอบ - สิ่งนี้เกี่ยวข้องกับสองเงื่อนไข - หากกองว่างเปล่าไม่มีองค์ประกอบใดที่สามารถลบได้เช่น Underflow เกิดขึ้นใน Stack หรือหาก Stack มีองค์ประกอบบางอย่างอยู่ในนั้น องค์ประกอบที่อยู่ด้านบนจะถูกลบออก . ซึ่งจะช่วยลดขนาดของสแต็กตามจำนวนองค์ประกอบที่นำออก
- Traversing /Displaying - สิ่งนี้เกี่ยวข้องกับการเยี่ยมชมแต่ละองค์ประกอบของสแต็กและแสดงบนหน้าจอ
นอกจากนี้เรายังสามารถแทรกฟังก์ชันเพิ่มเติมของ peek เช่น การดึงค่าที่ด้านบนสุดของ Stack
ลักษณะของกอง
- ลำดับการแทรกยังคงอยู่
- อนุญาตให้ทำซ้ำในกองได้
- ที่เก็บข้อมูลประเภทข้อมูลที่คล้ายคลึงกัน
- มีประโยชน์มากในการดำเนินการแยกวิเคราะห์
โค้ดตัวอย่าง
def isEmpty(stk): # checks whether the stack is empty or not if stk==[]: return True else: return False def Push(stk,item): # Allow additions to the stack stk.append(item) top=len(stk)-1 def Pop(stk): if isEmpty(stk): # verifies whether the stack is empty or not print("Underflow") else: # Allow deletions from the stack item=stk.pop() if len(stk)==0: top=None else: top=len(stk) print("Popped item is "+str(item)) def Display(stk): if isEmpty(stk): print("Stack is empty") else: top=len(stk)-1 print("Elements in the stack are: ") for i in range(top,-1,-1): print (str(stk[i])) # executable code if __name__ == "__main__": stk=[] top=None Push(stk,1) Push(stk,2) Push(stk,3) Push(stk,4) Pop(stk) Display(stk)
โค้ดด้านบนใช้ฟังก์ชัน Stack ใน Python 3.x หรือก่อนหน้านี้ เราสามารถสร้างโปรแกรมที่ขับเคลื่อนด้วยเมนูโดยให้ตัวเลือกแก่ผู้ใช้โดยใช้คำสั่ง if-else หลายคำสั่ง แนวคิดของการจัดเฟรมสแต็กยังคงเหมือนเดิมในทั้งสองกรณี
หน้าจอที่แสดงด้านล่างแสดงผลลัพธ์ที่ผลิตโดยโปรแกรมด้านบน นอกจากนี้เรายังสามารถใช้ฟังก์ชัน input() สำหรับระบบอินพุตแบบอิงตามผู้ใช้ (ในที่นี้ ฉันใช้อินพุตแบบคงที่)
ผลลัพธ์
Popped item is 4 Elements in the stack are: 3 2 1
คิว
ในสแต็ก ออบเจ็กต์จะถูกจัดเก็บทีละรายการ และอ็อบเจ็กต์เหล่านี้จะถูกลบออกตามลำดับการมาถึง เช่น ปฏิบัติตามแนวคิด FIFO FIFO หมายถึงการจัดเรียงประเภท First in First Out จะตามมาในโครงสร้างข้อมูลคิว
การดำเนินการตามคิว
-
การเพิ่ม / ต่อท้ายองค์ประกอบ - สิ่งนี้จะเพิ่มขนาดคิวตามจำนวนรายการที่เพิ่มและการเพิ่มจะเกิดขึ้นที่ส่วนท้ายเช่นที่ด้านหลังของคิว
-
การลบ / การลบองค์ประกอบ - สิ่งนี้เกี่ยวข้องกับสองเงื่อนไข - หากคิวว่างเปล่าไม่มีองค์ประกอบใดที่สามารถลบได้เช่น Underflow เกิดขึ้นในคิวหรือหากคิวมีองค์ประกอบบางอย่างอยู่ในนั้นองค์ประกอบที่อยู่ด้านหน้าจะถูกลบออก ซึ่งจะช่วยลดขนาดของสแต็กตามจำนวนองค์ประกอบที่นำออก
-
Traversing /Displaying - สิ่งนี้เกี่ยวข้องกับการเยี่ยมชมแต่ละองค์ประกอบของสแต็กและแสดงบนหน้าจอ
นอกจากนี้เรายังสามารถแทรกฟังก์ชันเพิ่มเติมของ peek เช่น การดึงค่าที่ส่วนหลัง/ท้ายของคิว
ลักษณะของคิว
- ลำดับการแทรกยังคงอยู่
- อนุญาตให้มีการทำซ้ำในคิว
- ที่เก็บข้อมูลประเภทข้อมูลที่คล้ายคลึงกัน
- มีประโยชน์มากในการแยกวิเคราะห์การทำงานของ CPU
โค้ดตัวอย่าง
#Adding elements to queue at the rear end def enqueue(data): queue.insert(0,data) #Removing the front element from the queue def dequeue(): if len(queue)>0: return queue.pop() return ("Queue Empty!") #To display the elements of the queue def display(): print("Elements on queue are:"); for i in range(len(queue)): print(queue[i]) # executable code if __name__=="__main__": queue=[] enqueue(5) enqueue(6) enqueue(9) enqueue(5) enqueue(3) print("Popped Element is: "+str(dequeue())) display()
โค้ดด้านบนใช้ฟังก์ชัน Queue ใน Python 3.x หรือก่อนหน้านี้ เราสามารถสร้างโปรแกรมที่ขับเคลื่อนด้วยเมนูโดยให้ตัวเลือกแก่ผู้ใช้โดยใช้คำสั่ง if-else หลายคำสั่ง แนวคิดของการจัดกรอบคิวยังคงเหมือนเดิมในทั้งสองกรณี
หน้าจอที่แสดงด้านล่างแสดงผลลัพธ์ที่ผลิตโดยโปรแกรมด้านบน นอกจากนี้เรายังสามารถใช้ฟังก์ชัน input() สำหรับระบบอินพุตแบบอิงตามผู้ใช้ (ในที่นี้ ฉันใช้อินพุตแบบคงที่)
ผลลัพธ์
Popped item is: 5 Elements on queue are: 3 5 9 6
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีใช้โครงสร้างข้อมูล Stack &Queue ใน Python 3.x หรือก่อนหน้านี้ คุณสามารถใช้อัลกอริธึมเดียวกันเพื่อใช้โปรแกรมตรวจจับสแต็ก/คิวในภาษาการเขียนโปรแกรมอื่นๆ