数据结构 五、队列

一、定义

只允许在一端进行插入操作,而在另一端进行删除的线性表
(头尾相接的顺序存储结构成为循环队列)

二、循环队列的顺序存储结构

typedef struct
{
	qelemtype data[maxsize];
	int front;
	int rear;
}sqqueue;

队列的顺序基本操作:

**(1)**入队操作

status enqueue(sqqueue *q,qelemtype e)
{
	if((q->rear+1)%maxsize==q->front)
		return error;
	q->data[q->rear]=e;
	q->rear=(q->rear+1)%maxsize;
return ok;
}

**(1)**出队操作

status dequeue(sqqueue *q,qelemtype *e)
{
	if(q->front==q->rear)
		return error;
	*e=q->data[q->front];
	q->front=(q->front+1)%maxsize;
	return ok;
		
}

三、队列链式存储结构

(其实就是链式的单链表)

int qelemtype;
struct qnode
{
	qelemtype data;
	struct qnode *next;
}qnode,*queueptr;

struct
{
	queueptr front,rear;
}linkqueue;

队列的顺序基本操作:

**(1)**入队操作

status enqueue(linkqueue *q,qelemtype e)
{
	queueptr s=(queueptr)malloc(sizeof(qnode));
	if(!s)//存储分配失败
		exit(overflow);
	s->data=e;
	s->next=null;
	q->rear->next=s;
	q->rear=s;
	return ok;
}

**(2)**出队操作

status dequeue(linkqueue *q,qelemtype *e)
{
	queueptr p;
	if(q->front==q->rear)
	return error;
	p=q->front->next;
	*e=p->data;
	q->front->next=p->next;
	
	if(q->rear==p)//如果队头就是队尾
	{
		q->rear=q->front
	}
	free(p);
	return ok;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值