C语言数据结构循环队列的相关操作(创建、出队、入队、取对头元素)

/*
*循环队列的创建
*循环队列的判断空或者满
*入队
*出队
*取对头元素
*/

#include
typedef int element;
#define MAXSIZE 1024
typedef struct seq_queue
{
    element data[MAXSIZE];
    int rear;//队尾
    int front;//对头
}Seq_Queue;
Seq_Queue*creat_seqqueue();//循环队列的创建
int empty_seqqueue(Seq_Queue*s);//判断循环队列是否为空
int full_seqqueue(Seq_Queue*s);//判断循环队列是否已满
int enter_seqqueue(Seq_Queue*s,element x);//入队
int pop_seqqueue(Seq_Queue*s,element *x);//出队
int getdata_seqqueue(Seq_Queue*s,element *x);//取对头元素
int length_seqqueue(Seq_Queue*s);//求队列的长度
void main()
{
    Seq_Queue*s;
    element x,y,z;
    int len;
    s=creat_seqqueue();
    if(s==NULL)
        printf("循环队列创建失败:\n");
       else
        printf("循环队列创建成功:\n");
        if(empty_seqqueue(s))
            printf("该循环队列为空:\n");
          else
            printf("该循环队列不为空:\n");
            if(full_seqqueue(s))
            printf("该循环队列已满:\n");
          else
            printf("该循环队列没有满:\n");
            printf("请输入要入队的数据:\n");
              scanf("%d",&x);
              if(enter_seqqueue(s,x))
                printf("入队成功:\n");
                else
                    printf("入队失败:\n");
                   if(pop_seqqueue(s,&y))
                     printf("出队的元素为:%d\n",y);
                      else
                        printf("出队失败:\n");

                        printf("队列的长度为:%d\n",length_seqqueue(s));
                        if( getdata_seqqueue(s,&y))
                            printf("对头元素为:%d\n",y);
                          else
                            printf("取对头元素失败:\n");




}
int empty_seqqueue(Seq_Queue*s)//判断循环队列是否为空
{
    if(s->rear==s->front)
          return 1;
    else
        return  0;

}
int full_seqqueue(Seq_Queue*s)//判断循环队列是否已满
{
    if((s->rear+1)%MAXSIZE==s->front)
    return 1;
    else
        return 0;

}
int length_seqqueue(Seq_Queue*s)//求队列的长度
{
    if(s->front==s->rear)
        return 0;
    else
        return((s->rear-s->front+MAXSIZE)%MAXSIZE) ;
}
int enter_seqqueue(Seq_Queue*s,element x)//入队
{
    if(full_seqqueue(s))
        return 0;
    else
    {
        s->data[s->rear]=x;
        s->rear=(s->rear+1)%MAXSIZE;
          return 1;
    }
}
int pop_seqqueue(Seq_Queue*s,element *x)//出队
{
    if(empty_seqqueue(s))
        return 0;
    else
    {
        *x=s->data[s->front];
        s->front=(s->front+1)%MAXSIZE;
        return 1;
    }
}
Seq_Queue*creat_seqqueue()//循环队列的创建
{
    Seq_Queue*s;
    element x;
    int i=0;
    s=(Seq_Queue*)malloc(sizeof(Seq_Queue));
    if(s==NULL)
        return NULL;
      else
        {
            s->front=0;
            s->rear=0;
        }
        printf("请输入数据:\n");
         scanf("%d",&x);
         while(x!=0)
         {
             s->data[i++]=x;
             s->rear++;
             scanf("%d,&x");
            }
            return s;

}
int getdata_seqqueue(Seq_Queue*s,element *x)//取对头元素
{
    if(empty_seqqueue(s))
        return 0;
    else
       {
            *x=s->data[s->front];
            return  1;
       }


}

你可能感兴趣的:(数据结构,c语言)