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

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

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

rangsan
PHP Hero Member
PHP Hero Member
Posts: 199
Joined: 30/04/2018 9:44 am

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

Post by rangsan »

Queue Algorithms

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

ภาพตัวอย่างของ Queue
คิว.png
คิว.png (37.99 KiB) Viewed 1609 times
Queue นั้นมี Operation ในการดึงข้อมูลเข้าออกดังนี้
1.Enqueue = การเพิ่มข้อมูลเข้าไปใน Queue
2.Dequeue = การนำข้อมูลออกจาก Queue

โค้ดของการ Enqueue

Code: Select all

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

Code: Select all

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) Viewed 1608 times
Algorithms ของการทำ Dequeue
Algorithms_De.png
Algorithms_De.png (25.26 KiB) Viewed 1608 times

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

Return to “Share Knowledge”

Who is online

Users browsing this forum: No registered users and 30 guests