Java数据结构——队列

这篇博客详细介绍了队列的基本概念,包括其FIFO(先进先出)特性,并对比了C语言和Java中队列的实现。在Java部分,重点讲解了使用链表实现队列的过程,包括节点定义、判断队列是否为空、入队、出队操作以及如何重写toString方法。此外,还提供了Java源码示例。
摘要由CSDN通过智能技术生成

队列

1. 队列的基础

1.1 定义

  • 相反,队列(queue)是一种先进先出的线性表。
  • 它只允许在表的一端进行插入,在另一端进行删除。
  • 特点:FIFO
  • 队列有两种储存方式:顺序表,和链表,我这只介绍链表,所以叫链队列

1.2 图例


在这里插入图片描述


2. C语言下的队列

2.1 单链队列的定义及初始

typedef struct QNode {
   
	QElemType data;
	struct QNode *next;
}QNode, *QueuePtr;
typedef struct {
   
	QueuePtr front;
	QueuePtr rear;
}LinkQueue;
Status InitQueue(LinkQueue &Q) {
   
	Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
	if(!Q.front) return -2;
	Q.front->next = NULL;
	
	return OK; 
} //构造一个空队列 Q 

2.2 队列 Q 是否为空队列

Status QueueEmpty(LinkQueue &Q) {
   
	if(Q.front == Q.rear) return true;
	else return false;
} // 队列 Q 是否为空队列

2.3 销毁 Q

Status DestroyQueue(LinkQueue &Q) {
   
	while(Q.front) {
   
		Q.rear = Q.front->next;
		free(Q.front);
		Q.front = Q.rear;
	}
	
	return OK;
} // 销毁 Q

2.4 入队

Status EnQueue(LinkQueue &Q, QElemType e) {
   
	QueuePtr *p;
	p = (QueuePtr)malloc(sizeof(QNode));
	if(!p) return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜满月

鼓励,鼓励,更加努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值