数据结构与算法---队列

enum boolean {FLASE,TRUE};
typedef enum boolean Bool;
typedef int ElementType;

struct queue
{
 int rear,front;
 ElementType *elements;
 int MaxSize;
};

typedef struct queue Queue;

void InitQueue(Queue *,int);
void FreeQueue(Queue *);
void MakeEmpty(Queue *);
Bool IsEmpty(Queue *);
Bool IsFull(Queue *);
int Length(Queue *);
int EnQueue(Queue *,ElementType);
ElementType DeQueue(Queue *);
ElementType GetFront(Queue *);

 

#include<stdio.h>
#include<stdlib.h>
#include"queue.h"


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)
{
 free(Q->elements);
}

void MakeEmpty(Queue *Q)
{
 Q->front = Q->rear = 0;
}

Bool IsEmpty(Queue *Q)
{
 return (Bool)(Q->front == Q->rear);
}

Bool IsFull(Queue *Q)
{
 return (Bool)(Q->front == (Q->rear+1) % (Q->MaxSize));
}

int Length(Queue *Q)
{
 return (Q->rear - Q->front + Q->Maxsize) % (Q->MaxSize);
}

int EnQueue(Queue *Q,ElementType item)
{
 if(!IsFull(Q))
 {
  Q->elements[Q->rear] = itme;
  Q->rear = (Q->rear +1) % (Q->MaxSize);
  return 0;
 }
 else
 return -1;
}

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("error");
  exit(1);
 }
}

ElementType GetFront(Queue *Q)
{
 if(!IsEmpty(Q))
 {
  return Q->elements[Q->front];
 }
 else
 {
  printf("error");
  exit(1);
 }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值