数据结构队列------队列的顺序存储结构及其基本操作

1.队列的初始化

#include<stdio.h>
#define maxn 10

//队列初始化操作 
typedef struct {
	int data [ maxn ];
	int rear, front;
} Sq_queue;

Init_queue ( Sq_queue &q ){
	int front = 0;//初始状态都指向0
	int rear = 0;
}

2.队列判空

bool Queue_empty ( Sq_queue q ){
	if ( q.front == q.rear )
		return true;
	else
		return false;
} 

3.新元素入队操作

//新元素入队操作
bool Enter_queue ( Sq_queue &q, int x ){
	if ( (q.rear + 1) % maxn == q.front )
		return false;
	q.data [ q.rear ] = x;
	q.rear = ( q.rear + 1 ) % maxn;
	return true;
} 

4.出队操作

//出队操作
bool Delete_queue ( Sq_queue &q, int &x ){
	if ( q.front == q.rear )
		return false;
	x = q.data [ q.front ];
	q.front = ( q.front + 1 ) % maxn;
	return true;
} 

5.获取队头元素

//获取队头元素
bool Gethead ( Sq_queue q ,int &x ){
	if ( q.front == q.rear )
		return false;
	x = q.data [ q.front ];
	return true;
} 

6.判断队列空\满的三种方案

  1. 结构体中增加一个变量记录队列元素个数
#include<stdio.h>
#define maxn 10

typedef struct {
	int data [ maxn ];
	int front, rear;
	int size;//记录队列中元素个数
}
  1. 结构体中设置标志位tag,等于0表示删除元素,等于1表示增加元素,
    当q.rear == q.front && tag == 0;表示队空。
    当q.rear == q.front && tag == 1;表示堆满。

  2. 就是前面程序中所写的,若 ( q.rear + 1 ) % maxn = q.front 表示队满。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值