การทำ Queue เพื่อใช้ในการเรียงลำดับข้อมูล

หมวดสำหรับแบ่งบันความ รู้ต่างๆ จะมีหมวดย่อยๆ ในหมวดนี้ เช่น php, SQL, XML, CSS

Moderator: mindphp, ผู้ดูแลกระดาน

rangsan
PHP Hero Member
PHP Hero Member
โพสต์: 199
ลงทะเบียนเมื่อ: 30/04/2018 9:44 am

การทำ Queue เพื่อใช้ในการเรียงลำดับข้อมูล

โพสต์โดย rangsan » 05/05/2018 11:11 am

Queue Algorithms

Queue นั้นเป็นของโครงสร้างฐานข้อมูลที่มีลักษณะเรียงต่อกันเป็นแถว เมื่อมีการเพิ่มข้อมูลใหม่เข้าไปภายในคิวจะต้องต่อท้าย หรือ ( rear ) และเมื่อมีการนำข้อมูลออกจากคิวจะต้องออกทางหัวของโครงสร้างเท่านั้นหรือที่เรียกกันว่า (front) โครงสร้างของ Queue นั้นจะมีลักษณะเป็นเชิงเส้นคล้าย ๆ กับโครงสร้างของ Stack แต่ทั้ง 2 โครงสร้างนั้นจะมีตัวชี้วัดที่แตกต่างกันเช่น ของ Queue นั้นจะมีตัวชี้วัดคือ front และ rear ดังนั้นการทำงานในการดึงข้อมูลเข้าและออกของ Queueนั้นจะมีลักษณะเป็นแบบ FIFO ( First In First Out ) อธิบายสั้น ๆก็คือ การที่ข้อมูลไหนเข้าไปในฐานข้อมูลก่อนข้อมูลนั้นก็ต้องออกก่อน เป็นต้น

ภาพตัวอย่างของ Queue
คิว.png
คิว.png (37.99 KiB) เปิดดู 89 ครั้ง


Queue นั้นมี Operation ในการดึงข้อมูลเข้าออกดังนี้
1.Enqueue = การเพิ่มข้อมูลเข้าไปใน Queue
2.Dequeue = การนำข้อมูลออกจาก Queue

โค้ดของการ Enqueue

โค้ด: เลือกทั้งหมด

addq ( int data ) 
{     
if ( rear == MAX-1 )  {     
   printf ( "\nQueue is full" ); 
   return; 
}  else  {
   rear++ ; 
   arr[rear]  = data; 
     if ( front == -1 ) 
   front = 0; 
}
}


จากโค้ดจะเห็นได้ว่าก่อนที่เราจะเพิ่มข้อมูลเข้าไปใน Queue นั้นจะมีการเช็คสถานะของ Queue ก่อนว่าเต็มหรือไม่ถ้าไม่ก็จะเข้าไปทำ else ต่อไป


โค้ดในส่วนของการลบข้อมูลภายใน Queue

โค้ด: เลือกทั้งหมด

delq( ) 
{   int data ; 
     if ( front == -1 ) 
   {     printf ( "\nQueue is Empty" ) ; 
      return NULL ; 
   } 
     data = arr[front] ; 
   if ( front == rear ) 
      front = rear = -1 ; 
   else 
      front++ ; 
     return data ; 
}


จากโค้ดจะเห็นได้ว่ามีโค้ดในส่วนของการเช็ค Queue ว่าว่างหรือไม่ และยังมีส่วนของการลบ ข้อมูลที่เหลืออยู่ใน Queue เพียงตัวเดียวด้วย

Algorithms ของการทำ Enqueue
Algorithm_EN.png
Algorithm_EN.png (25.01 KiB) เปิดดู 88 ครั้ง


Algorithms ของการทำ Dequeue
Algorithms_De.png
Algorithms_De.png (25.26 KiB) เปิดดู 88 ครั้ง



อ้างอิง : sci.rmutt.ac.th
It’s never too late to start again.

  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 2 และ บุคคลทั่วไป 0 ท่าน