循环队列

 

1.实验所涉及的知识点

(1)C语言的指针知识。

 (2)顺序表的操作。

(3)队列的先进先出原理。

(4) 空队列、入队列、出队列、返回队列长度等操作。

(5) 应用:循环队列。

 

2.程序源码

#include "stdafx.h"
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#define error 0
#define ok 1
#define size 5 //队列长度
typedef int Elemtype;
typedef int Status;
typedef struct{
	 Elemtype *base;
	 int front;
	 int nrear;
}Queue;
Status Que_init(Queue &L)//创建空的队列
{
	 L.base=(Elemtype *)malloc(size*sizeof(Elemtype));
	 if(!L.base)
	  return error;
	 L.front=L.nrear=0;
	 return ok;
}
Status Que_size(Queue &L)//返回队列的长度
{
	return (L.nrear-L.front+size)%size;
}
Status Que_insert(Queue &L,Elemtype e)//进入循环队列
{
	 if((L.nrear+1)%size==L.front)//注意内存空间首个地址为空值,所以实际可存入的元素少1
	  return error;
	 L.base[L.nrear]=e;
	 L.nrear=(L.nrear+1)%size;
	 return ok;
}
Status Que_delete(Queue &L,Elemtype &e)//出循环队列
{
	 if(L.nrear==L.front)
	  return error;
	 e=L.base[L.front];
	 L.front=(L.front+1)%size;
	 return ok;
}
int main()
{
	 Queue L;
	 int m,n;
	 Que_init(L);
	 printf("请输入进入循环队列元素:/n");
	 for(int i=0;i<size-1;i++)
	 {
	  scanf("%d",&m);
	  Que_insert(L,m);
	 }
	 n=Que_size(L);
	 printf("循环队列长度:%d/n",n);
	 printf("出循环队列的元素:/n");
	 for(int i=0;i<size-1;i++)
	 {
	  Que_delete(L,n);
	  printf("%d/n",n);
	 }
	 printf("/n");
	 system("pause");
	 return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值