栈与队列的使用

本文详细介绍了栈和队列在C++和Java中的实现,包括数据结构的特点(栈先进后出,队列先进先出),以及如何在C++和Java中使用Stack和Queue/Deque进行操作。特别提到了双向队列(Deque)的灵活性和其在实现栈时的应用。
摘要由CSDN通过智能技术生成

一、特点

栈:先进后出

队列:先进先出

二、实现

C++

#include<stack>

stack<type> StackName;

StackName.empty()

StackName.top()

StackName.pop()

StackName.push(type)

StackName.size()

java

import java.util.Stack;	//引用栈
//初始化
Stack<Integer> stack = new Stack<Integer>();
//进栈
stack.push(Element);
//出栈
stack.pop();
//取栈顶值(不出栈)
stack.peek();
//判断栈是否为空
stack.isEmpty()

队列

C++

queue<int> que;

que.push(x);

que.size();

que.pop();

que.top();

que.empty();

java

Queue<Integer> queue=new LinkedList<>();

queue.offer();

queue.poll();

queue.isEmpty();

queue.peek();

三、Queue和Deque

队列(queue)是一种常用的数据结构,在Java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约。可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则。

Java中,LinkedList实现了Queue接口,因为LinkedList进行插入、删除操作效率较高。

双向队列(Deque) 全称为 double ended queue,是Queue的一个子接口,双向队列是指该队列两端的元素既能入队(offer)也能出队(poll),除此之外,其余特性则和父级 Queue 类似。如果将Deque限制为只能从一端入队和出队,则可实现栈的数据结构。对于栈而言,有入栈(push)和出栈(pop),遵循先进后出原则。

Deque 中定义的方法主要分为四部分,

  • 第一部分就如 Deque 定义所言,提供两侧插入或删除的方法。
  • 第二部分是继承自 Queue 的实现。
  • 第三部分表示如果要基于此实现一个stack需要实现的方法。
  • 最后一部分是继承自 collection 的方法。

此接口定义在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法。
每种方法都存在两种形式:

  • 一种形式在操作失败时抛出异常。
  • 另一种形式返回一个特殊值(null 或 false,具体取决于操作)。
  • 插入操作的后一种形式是专为使用有容量限制的 Deque 实现设计的;在大多数实现中,插入操作不能失败。
//在队首添加元素
void addFirst(E e);
boolean offerFirst(E e);

//在队尾添加元素
void addLast(E e);
boolean offerLast(E e);

//删除队首元素
E removeFirst();
E pollFirst();

//删除队尾元素
E removeLast();
E pollLast();

//获取队首元素
E getfirst();
E peekFirst();

//获取队尾元素
E getLast();
E peekLast();

//删除第一个事件,大多数指的是删除第一个和 o equals的元素
boolean removeFirstoccurrence(object o);
//删除最后一个事件,大多数指的是删除最后一个和 o equals的元素
boolean removeLastoccurrence(object o);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值