java笔记:栈和队列,以及栈和队列的实现

本文详细介绍了栈和队列这两种重要的数据结构,包括它们的特点、常用操作以及在Java中的实现方式。栈是后进先出(LIFO)的数据结构,常用操作有push、pop、peek等;队列则是先进先出(FIFO),常见的操作有enqueue、dequeue等。文章还展示了如何使用LinkedList和Array来实现栈和队列,并提及了栈在逆波兰表达式计算中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

栈和队列是一种特殊的线性表
LinkedList add/remove
                  push/pop
                  addFirst/addLast/peekFirst/peekLast
stack的peek方法是返回栈顶元素但不移除它
但stack的pop方法是会移除的

pop   删除数据   弹栈
push  放入数据  压栈

栈 先进后出  (First In Last Out    FILO)

    后进先出     (Last In First Out    LIFO)
栈顶 top   栈底 bottom
 栈的操作: 1、初始化  2、压栈/弹栈   3、查看当前栈顶元素  4、判断为空  5、返回元素个数

实现:  链表可以,顺序表也可以
  链表LinkedList   push/pop   头插/头删
  顺序表  Stack(class )   尾插/尾删      

自己实现栈:利用顺序表实现一个栈       
 class Stack{
    private int[] array;
    private int size;   <=> top

   public void push() {}
   public void pop()  {}
   public  int top(){}
   public  boolean isEmpty(){}
   public  int size(){}
  
}
empty()  测试此堆栈是否为空
peek()    查看此堆栈顶部的对象,而不从栈中删除它
pop()   删除次堆栈顶的对象,并将该对象作为此函数的值返回
push()  将项目推送到次堆栈的顶部
search(Object o) 返回一个对象在此堆栈上的基于1的位置 
 

栈的应用 :
1、逆波兰表达式 /后缀表达式的运算   3/((3+2)x(5+6))==>  3 3 2+5 6+x /

JAVA中的队列:(先进先出)(Firt In First Out  FIFO)
Queue(interface)      LinkedList(class)
Queue<String>=new LinkedList<>();
LinkedList<String>=new LinkedList<>();

术语  队首/队尾
        front/rear
操作  push/pop/front/rear..
自己实现:  链表实现(单链表)记录第一个和最后一个结点
头删 pop  尾插 push 
 记录第一个和最后一个结点
用数组实现队列
  1)不搬移
  2)空间浪费
     1)只有rear走到最后才搬一次
     2)循环队列(基本条件无法区分空/满)

rear=(rear+1)%容量
index=(rear-1+容量)%容量
 
element()  检索,但不删除,这个队列的头
peek()  检索但不删除此队列的头,如果此队列为空,则返回null
poll()   检索并删除此队列的头,如果此队列为空,则返回null
remove()  检索并删除此队列的头


java编译器只认识引用类型。不知道实际指向的对象的类型


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值