关于循环队列 - C&算法所需的一切

在本教程中,您了解数据结构中的C循环队列。 在此,我们介绍了循环队列算法 - 插入和删除,并使用C程序在运行程序中实现算法。

通过线性队列或简单队列来了解循环队列和优势。了解 队列数据结构 and 队列计划在c中.

圆形队列是线性数据结构,其以圆形形式实现而不是直线阵列和 使用数组避免队列中的空间浪费。如果我们联合线性队列的两端,那么它克服了作为数组实现的线性队列中未利用空间的问题这是C循环队列的主要优点。
圆形队列
圆形队列

循环队列算法

圆形队列的两个操作 - 插入和删除。我们使用一系列数据结构到存储的元素。

循环队列算法
循环队列算法


插入 -   第一个元素插入在圆形队列中进行,然后您必须增加前后“前= -1" and "后= -1" 然后你必须以+1升级和前后的增量转移“前= 0.“ 和 ”rear=0“然后,您否则将您的第一个元素插入”前= 0.“修复并递增你的”后=后+ 1“要插入更多。 

Start
If ((rear = = size-1 && front==0) || (rear = = front - 1))
   printf("圆形队列 is Overflow");
Else If (rear = = size -1 && front ! = 0) 
   rear=0;
   CQ[rear]=item;
Else If (front = = -1)
   front=0; 
   rear=0;
   Q[rear]=item;
End   
删除 -  如果无法删除“Front == - 1”,则无法检查 前后两者都处于同一个地方,然后前后两者移到“前= -1“ 和 ”后= -1“ 否则 ”Front == size-1“(其中大小是队列的大小,其两端是关节)然后换档”前= 0.“或最后你增加你的 面向“前=前+ 1“ 删除。 


Start
If (front = = -1)
       printf("圆形队列 is Underflow");
Else
      item=CQ[front];
       If (front = = rear)
           front = -1;
           rear = -1;
       Else If (front = = size - 1)
           front=0;
       Else
           front = front +1;
    printf("%d is delete");
End
我认为你了解循环队列算法,如果不是请重新审视上述段落,因为我在下面实施了C程序中的算法。

C C中循环队列的菜单驱动程序


/* write a menu driven program using c circular queue.
 the menu includes Insert, delete, display, exit
*/
#include<stdio.h>
 
#define size 5
 
void cinsert();
void cdelete();
void cdisplay();
int cqueue[size];
int rear = - 1;
int front = - 1;

int main()
{
    int choice;
    while (1)
    {
        printf("\n 1.Insert element to CIRCULAR QUEUE \n");
        printf("2.Delete element from CIRCULAR QUEUE \n");
        printf("3.Display all elements of CIRCULAR QUEUE \n");
        printf("4.Quit \n");
        printf("Enter your choice : ");
        scanf("%d", &choice);
        switch (choice)
        {
            case 1:cinsert();
                   break;
            case 2:cdelete();
                   break;
            case 3:cdisplay();
                   break;
            case 4://exit(0);
            default:printf("Wrong choice \n");
        } 
    } 
} 
 
void cinsert()
{
   int item;
   printf("Insert the element in queue : ");
                   scanf("%d", &item);
    if ((rear == size - 1 && front == 0) ||(rear == front-1))
    {
    printf("Circular Queue Overflow \n");
    }
 else 
 {
   if (rear== size -1 && front != 0)
             {
       rear = 0;
                cqueue[rear]=item;
             }
             else
    {
    if(front==-1)
    {
     front=0;
    rear = 0;
        cqueue[rear] = item;
    }
  }
 }
} 
 
void cdelete()
{
 int item;
    if (front == - 1)
    {
        printf("Circular Queue Underflow \n");
    }
    else
    { 
       item = cqueue[front];
        if(front==rear)
        { 
          front=-1;
          rear=-1;
  }
  else if(front==size-1)
  {
   front=0;
  }
  else 
  {
   front=front+1;
  }
  printf("Element deleted from queue is : %d\n", cqueue[front+1]);
     }
} 
 
void cdisplay()
{
 int i;        
   if(front == -1)  
      printf("\nCircular Queue is Empty!!!\n");  
   else  
   {  
      i = front;  
      printf("\nCircular Queue Elements are : \n");  
      if(front <= rear)
   {  
     while(i <= rear)  
        printf("%d \n",cqueue[i++]);  
      }  
      else
   {  
     while(i <= size - 1)  
        printf("%d \n", cqueue[i++]);  
     i = 0;  
     while(i <= rear)  
        printf("%d\n",cqueue[i++]);  
      }  
   }     
}
输出

圆形队列

在上面你学习c 循环队列,算法,并实现C中的算法。 
圆形队列的真实生活例子是什么? 评论你的答案。

快乐编码ðÿ~š

暂无评论:

如果您有任何疑问,请告诉我

供电 博主.