静态队列 -note

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

#define Maxsize 10

typedef struct {
	int data[Maxsize];
	int rear, front;
	//int size;//标定数量版
	int tag;   //标定上一次操作
}Sequence;

bool InitSq(Sequence &L)
{
	L.rear = 0;
	L.front = 0;
	//L.size = 0;   //size vision
	L.tag = 0;  //last op
	return true;
}

bool EnSeq(Sequence &L, int num)
{
	//if ((L.rear + 1) % Maxsize == L.front)   //normal
	//if (L.size==10)  //size vision
	if(L.rear==L.front&&L.tag==1)
		return false;
	L.data[L.rear] = num;
	L.rear = (L.rear + 1) % Maxsize;
	//tag vision
	L.tag = 1;
	//size vision
	//L.size++;    
	return true;
}

bool OutSeq(Sequence &L, int &num)
{
	/*normal
	if (L.rear == L.front)
		return false;
	*/
	//size vision
	//if (L.size == 0)
	//tag vision
	if(L.rear==L.front&&L.tag ==0)
		return false;
	num = L.data[L.front];
	L.data[L.front] = 0;
	L.front = (L.front + 1) % Maxsize;
	//size vision
	//L.size--;
	//tag vision
	L.tag = 0;
	return true;
}

int LengthSeq(Sequence L)
{
	//tag vision and normal
	return (L.rear + Maxsize - L.front) % Maxsize;

	//size vision
	//return L.size;  
	

}

bool EmptySeq(Sequence L)
{
	if (L.rear == L.front&&L.tag==0)
	//if(L.size==0)   //size vision
		return true;
	else
		return false;
}



int main()
{
	Sequence L;
	InitSq(L);
	EnSeq(L, 5);
	EnSeq(L, 6);
	EnSeq(L, 3);
	EnSeq(L, 1);
	int out;
	OutSeq(L, out);
	printf("go out %d\n", out);
	printf("the len of seq:%d\n", LengthSeq(L));
	printf("the Seq is %x now\n", EmptySeq(L));
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值