利用数组和链表实现一个队列

本文介绍了队列的“先进先出”特性,并对比了顺序队列和链式队列。顺序队列使用数组实现,可能会遇到假溢出问题,解决方法包括元素搬移或采用循环队列。链表实现的队列则避免了此类问题。
摘要由CSDN通过智能技术生成

什么是队列

可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。

队列的最大特点就是“先进先出”。

栈有两个基本操作:入栈 push()和出栈 pop()。入栈和出栈都是在栈顶。

队列最基本的操作也是两个:入队 enqueue(),放一个数据到队列尾部;出队 dequeue(),从队列头部取一个元素。

队列跟栈一样,也是一种操作受限的线性表数据结构。

 

顺序队列和链式队列

队列可以用数组来实现,也可以用链表来实现。

用数组实现的队列,我们叫作顺序队列。

用链表实现的队列,我们叫作链式队列。

 

 

数组实现一个顺序队列

 

用数组实现之前先说一个概念:假溢出

假溢出

作为队列用的存储区还没有满,但队列却发生了溢出,我们把这种现象称为"假溢出"

解决假溢出有两种方案:

一、将队列元素向前搬移。(如下代码就是利用此解决方案)

二、将队列看成首尾相连,即循环队列。

public class ArrayQueue {
    private String[] items;
    private int head;        //队头
    private int tail;        //队尾
    private int size;

    public ArrayQueue(int n) {
        this.items &
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值