队列的顺序实现(入队、出队、对长、获取队头元素)

#include<stdio.h>
#define MAXSIZE 100

typedef struct{
 int *base;   //存储空间的基地址 
 int front; //头指针 
 int rear; //尾指针 
}SqQueue;

//初始化 
bool InitQueue(SqQueue &Q)
{
 //构造一个空队列Q
 Q.base=new int[MAXSIZE];
 if(!Q.base)
 return false;
 
 Q.front=Q.rear=0;
 return true; 
 } 

 
 //求队列的长度
 int QueueLength(SqQueue Q)
 {
  int length;
  length=(Q.rear-Q.front+MAXSIZE)%MAXSIZE; 
  printf("队列的长度:%d\n",length);
 return length; 
  } 

  //入队
 bool EnQueue(SqQueue &Q,int e)
 {
  if((Q.rear+1)%MAXSIZE==Q.front)   //判断队列是否已经满了 
  return false;
  
  Q.base[Q.rear]=e;
  Q.rear=(Q.rear+1)%MAXSIZE; //对我i指针+1 
  printf("入队的元素为:%d\n",e);
   return true;
  } 
  
  //出队
  bool DeQueue(SqQueue &Q,int &e){
   //删除Q的队头元素,用e返回其值
 if(Q.front==Q.rear)
 return false;
 e=Q.base[Q.front];  //将对头元素保存到e
 Q.front=(Q.front+1)%MAXSIZE;
 printf("出队的元素为:%d\n",e);
 return false;    
  }

  //取队头元素
  int GetHead(SqQueue Q)
{
   //返回Q的队头元素,不修改头指针
   if(Q.front!=Q.rear)
   printf("队头元素为:%d\n",Q.base[Q.front]); 
   return Q.base[Q.front]; 
} 

int main()
{
  SqQueue q;
 int e;
  InitQueue(q);
  QueueLength(q);
  EnQueue(q,1);
  EnQueue(q,2);
  EnQueue(q,3);
  EnQueue(q,4);
  QueueLength(q);
  DeQueue(q,e);
  DeQueue(q,e);
   QueueLength(q);
   GetHead(q); 
}
   
  
  
  

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值