Hàng đợi (Queue) trong C



Hàng đợi (Queue) là một cấu trúc dữ liệu trừu tượng, là một cái gì đó tương tự như hàng đợi trong đời sống hàng ngày (xếp hàng).

Chương trình minh họa Hàng đợi (Queue) trong C

#include 
#include 
#include 
#include #define MAX 6int intArray[MAX];
int front = 0;
int rear = -1;
int itemCount = 0;int peek(){
   return intArray[front];
}bool isEmpty(){
   return itemCount == 0;
}bool isFull(){
   return itemCount == MAX;
}int size(){
   return itemCount;
}  void insert(int data){   if(!isFull()){
	
      if(rear == MAX-1){
         rear = -1;            
      }             intArray[++rear] = data;
      itemCount++;
   }
}int removeData(){
   int data = intArray[front++];
	
   if(front == MAX){
      front = 0;
   }
	
   itemCount--;
   return data;  
}int main() {
   /* chen 5 phan tu */
   insert(3);
   insert(5);
   insert(9);
   insert(1);
   insert(12);   // front : 0
   // rear  : 4
   // ------------------
   // index : 0 1 2 3 4 
   // ------------------
   // queue : 3 5 9 1 12
   insert(15);   // front : 0
   // rear  : 5
   // ---------------------
   // index : 0 1 2 3 4  5 
   // ---------------------
   // queue : 3 5 9 1 12 15
	
   if(isFull()){
      printf("Hang doi (Queue) da day!\n");   
   }   // xoa mot phan tu 
   int num = removeData();
	
   printf("Phan tu bi xoa: %d\n",num);
   // front : 1
   // rear  : 5
   // -------------------
   // index : 1 2 3 4  5
   // -------------------
   // queue : 5 9 1 12 15   // Chen them mot phan tu
   insert(16);   // front : 1
   // rear  : -1
   // ----------------------
   // index : 0  1 2 3 4  5
   // ----------------------
   // queue : 16 5 9 1 12 15   // neu hang doi la day thi phan tu se khong duoc chen. 
   insert(17);
   insert(18);   // ----------------------
   // index : 0  1 2 3 4  5
   // ----------------------
   // queue : 16 5 9 1 12 15
   printf("Phan tu tai vi tri front: %d\n",peek());   printf("----------------------\n");
   printf("Gia tri chi muc : 5 4 3 2  1  0\n");
   printf("----------------------\n");
   printf("Hang doi (Queue):  ");
	
   while(!isEmpty()){
      int n = removeData();           
      printf("%d ",n);
   }   
}

Kết quả

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Hàng đợi (Queue) trong C
cau-truc-du-lieu-hang-doi.jsp