MOOC数据结构 浙江大学 2.3.1队列及顺序存储实现

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
#define maxsize 5 

struct nodeq{
	int data[maxsize];
	int rear;
	int front;
	int flag;//标志是满还是空 最大限度利用data数组的空间 
};
typedef struct nodeq *queque;

int isfull(queque ptrq)
{
	if(((ptrq->rear)%maxsize==ptrq->front)&&ptrq->flag==1//1为满)
	{
		return true;
	}
	else
	{
		return false;
	}
}//是否满 

int isempty(queque ptrq)
{
	if((ptrq->front==ptrq->rear)&&ptrq->flag==0//0为空)
	{
		return true;
	}
	else
	{
		return false;
	}
}//是否空 

int addq(queque ptrq,int item)
{
	if(isfull(ptrq))
	{
		printf("列已满\n");
		return 0;
	}
	else
	{	
		ptrq->flag=1;
		ptrq->rear=(ptrq->rear)%maxsize;
		ptrq->data[ptrq->rear]=item;
		ptrq->rear++;
	}
 } //后加入 
 
 int putq(queque ptrq)
 {
 	if(isempty(ptrq))
 	{
 		printf("列已空\n");
 		return NULL;
	 }
	else
	{
		ptrq->flag=0;
		ptrq->front=(ptrq->front)%maxsize;
		return ptrq->data[ptrq->front++];
	} 
 }//前取出 
 
 int show(queque ptrq)
 {
 	for(int i=ptrq->front;i<ptrq->rear;i++)
 	{
 		printf("%d\n",ptrq->data[i]);
	 }
 }//打印 
 
 queque createq(queque ptrq)
 {
 	ptrq=(queque)malloc(sizeof(struct nodeq));
 	ptrq->front=ptrq->rear=0;
 	return ptrq;
 }//初始化 
 
 int main()
 {
 	int isfull(queque ptrq);
 	int isempty(queque ptrq);
 	int addq(queque ptrq,int item);
 	int putq(queque ptrq);
 	int show(queque ptrq);
	queque createq(queque ptrq);
	queque q;
	q=createq(q);
 	/*addq(q,3);
 	addq(q,4);
 	addq(q,5);
 	addq(q,6);
 	addq(q,7);
 	putq(q);
 	putq(q);
 	putq(q);
 	putq(q);
 	int i=putq(q);
 	printf("%d",i);
	show(q);试验*/
	free(q);//释放空间 
	return 0;
 }
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值