数据结构之C++实现顺序队列(SeqQueue)(无主函数)

#include<iostream>
using namespace std;
#define SIZE 10
class SeqQueue
{
public:
	SeqQueue()
	{
		m_data = new int[SIZE];
		m_head = m_rear = 0;
	}
	~SeqQueue()
	{
		if(m_data != NULL)
		{
			delete []m_data;
			m_data = NULL;
		}
	}
	void InQueue(int v)
	{
		if(!IsFull())
		{
			m_data[m_rear%SIZE] = v;
			m_rear = (m_rear+1)%SIZE;
		}		
	}
	void OutQueue()
	{
		if(!IsEmpty())
			m_head = (++m_head )%SIZE;
	}
	bool IsEmpty(){return m_head == m_rear ? true : false;}
	bool IsFull(){return (m_rear+1)%SIZE == m_head ? true : false;}
	void Print()
	{
		for(int i = m_head;i !=m_rear;)
		{
			cout<<m_data[i]<<" ";
			i = (i+1)%SIZE;
		}
		cout<<endl;
	}
	int Length()
	{
		return (m_rear - m_head + SIZE)%SIZE;
	}
private:
	int *m_data;
	int m_head;
	int m_rear;
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言数据结构与算法中,实现顺序队列的基本操作包括入队、出队、判断队列是否为空、判断队列是否已满、获取队头元素等操作。其中,顺序队列是一种基于数组实现队列,它的特点是元素在队列中的位置是固定的,队列的头和尾都是可以移动的指针。以下是实现顺序队列的各种基本操作的方法: 1. 入队操作:将元素插入队列尾部,同时移动队列尾指针。 2. 出队操作:将队列头部元素删除,同时移动队列头指针。 3. 判断队列是否为空:当队列头指针和队列尾指针相同时,队列为空。 4. 判断队列是否已满:当队列尾指针指向队列的最后一个元素时,队列已满。 5. 获取队头元素:返回队列头部元素的值,但不删除该元素。 6. 获取队列长度:通过队列头指针和队列尾指针的位置关系计算得出队列长度。 以下是实现顺序队列的基本操作的代码实现: ``` #define MAXSIZE 100 // 定义队列的最大长度 typedef int DataType; // 定义队列元素的数据类型 typedef struct { DataType data[MAXSIZE]; // 队列的元素数组 int front; // 队列头指针 int rear; // 队列尾指针 } SeqQueue; // 初始化队列 void InitQueue(SeqQueue *Q) { Q->front = Q->rear = 0; } // 判断队列是否为空 int IsEmpty(SeqQueue Q) { return Q.front == Q.rear; } // 判断队列是否已满 int IsFull(SeqQueue Q) { return (Q.rear + 1) % MAXSIZE == Q.front; } // 入队操作 int EnQueue(SeqQueue *Q, DataType x) { if (IsFull(*Q)) { return 0; // 队列已满,入队失败 } Q->data[Q->rear] = x; Q->rear = (Q->rear + 1) % MAXSIZE; return 1; // 入队成功 } // 出队操作 int DeQueue(SeqQueue *Q, DataType *x) { if (IsEmpty(*Q)) { return 0; // 队列为空,出队失败 } *x = Q->data[Q->front]; Q->front = (Q->front + 1) % MAXSIZE; return 1; // 出队成功 } // 获取队头元素 int GetHead(SeqQueue Q, DataType *x) { if (IsEmpty(Q)) { return 0; // 队列为空,获取队头元素失败 } *x = Q.data[Q.front]; return 1; // 获取队头元素成功 } // 获取队列长度 int GetLength(SeqQueue Q) { return (Q.rear - Q.front + MAXSIZE) % MAXSIZE; } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值