数据结构队列的各种操作

 

#include"stdio.h"  
#include"stdlib.h"  
typedef int ElementType;  
typedef struct Queue  
{  
    int rear,front;  
    ElementType *elements;  
    int MaxSize;  
}Queue;  
void InitQueue(Queue *Q,int sz)//初始化  
{  
    Q->MaxSize=sz;  
    Q->elements=(ElementType *)malloc(sizeof(ElementType)*Q->MaxSize);  
    Q->front=Q->rear=0;  
}  
void freeQueue(Queue *Q,int sz)//释放空间  
{  
    free(Q->elements);  
}  
void MakeEmpty(Queue *Q)//置空  
{  
    Q->front=Q->rear=0;  
}  
int Length(Queue *Q)//返回长度  
{  
    return (Q->rear-Q->front+Q->MaxSize)%(Q->MaxSize);  
}  
int IsFull(Queue *Q)//判断是否为满  
{  
    if (Q->rear!=0&&(Q->front==(Q->rear)%(Q->MaxSize)))  
        return 1;  
    else 
        return 0;  
}  
int IsEmpty(Queue *Q)//判断是否为空  
{  
    if(Q->front==Q->rear)  
        return 1;  
    else 
        return 0;  
}  
void EnQueue(Queue *Q)//进队  
{   ElementType item;  
    scanf("%d",&item);  
    while((!IsFull(Q))&&(item!=-1))  
    {  
        Q->elements[Q->rear]=item;  
        Q->rear=(Q->rear+1)%(Q->MaxSize);  
        scanf("%d",&item);  
    }  
}  
ElementType DeQueue(Queue *Q)  
{  
    ElementType item;  
    if(!IsEmpty(Q))  
    {  
        item=Q->elements[Q->front];  
        Q->front=(Q->front+1)%(Q->MaxSize);  
        return item;  
    }  
    else 
    {  
        printf("对空!\n");  
        exit(1);  
    }  
}  
ElementType GetFront(Queue *Q)  
{  
    if(!IsEmpty(Q))  
        return Q->elements[Q->front];  
    else 
    {  
        printf("队空!\n");  
        exit(1);  
    }  
}  
void main()  
{  
    int i;  
    Queue Q;  
    InitQueue(&Q,10);  
    EnQueue(&Q);  
    for(i=0;i<10;i++)  
    if(!IsEmpty(&Q))  
    printf("%-5d",DeQueue(&Q));  
} 

  

 

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/817866

转载于:https://www.cnblogs.com/umgsai/p/3908156.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值