队列——数组实现

引言:


       队列的实现除了链表外,也可用数组实现。


分析描述:


      队列的结构:

typedef int ElementType;
typedef struct QueueRecord{
	int Capacity;
	int Front;
	int Rear;
	int Size;
	ElementType *Array;
}QueueRecord, *Queue;

       创建队列:

void MakeEmpty(Queue Q)
{
	Q->Size  = 0;
	Q->Front = 1;
	Q->Rear  = 0;
}

Queue CreateQueue(int MaxElements)
{
	Queue QueueHead  = (Queue)malloc(sizeof(struct QueueRecord));
	if(QueueHead == NULL){
		fprintf(stderr, "out of sapce .\n");
		exit(0);
	}
	QueueHead->Array = (ElementType *)malloc(sizeof(ElementType)*MaxElements);
	if(QueueHead->Array == NULL){
		fprintf(stderr, "Out of sapce .\n");	
	}
	QueueHead->Capacity  = MaxElements;

	MakeEmpty(QueueHead);

	return QueueHead;
}

       判断队列为空或队列已满:

int IsEmpty(Queue Q)
{
	return Q->Size == 0;
}

int IsFull(Queue Q)
{
	return Q->Size == Q->Capacity;
}

       入队列:

static int
Succ(int Value, Queue Q)
{
	if(++Value == Q->Capacity)
			Value = 0;
	return Value;
}

void Enqueue(ElementType data, Queue Q)
{
	if(IsFull(Q))
		fprintf(stderr, "full queue.\n");
	else{
		Q->Size++;
		Q->Rear = Su(Q->Rear, Q);	
		Q->Array[Q->Rear] = X;
	}
		
}

        出队列:

void Dequeue(Queue Q)
{
	if(IsEmpty(Q))
		fprintf(stderr, "Empty queue.\n");
	else{
		Q->Size--;
		Q->Front = Succ(Q->Front, Q);	
	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值