[Java]Stack类的使用

Stack的底层存储结构是数组,Stack的进出方式是后进先出,Stack实现了List接口。

一、Stack的创建

Stack只有无参构造一种构造方法

Stack<Integer> stack=new Stack<>();

二、Stack的常用方法

Stack的常用方法都具有Stack的特色

(1)入栈(尾插)

//已经创建一个Stack<Integer>实例stack
stack.push(10);//向栈中压入一个数据10

 (2)出栈(尾删)

//已经创建一个Stack<Integer>实例stack
stack.pop();//将栈顶元素出栈

(3) 获取栈顶元素

//已经创建一个Stack<Integer>实例stack
int a=stack.peek();//获取到栈顶的元素

 (4)获取栈内元素个数和判断栈是否为空

//已经创建一个Stack<Integer>实例stack
stack.size()//获取到栈内元素个数
stack.empty()//判断栈是否为空,空则返回true,非空返回true

 值得一提的是,List和Collection接口中都定义的isEmpty()方法来判断栈是否为空,栈使用的是empty()方法;

三、Stack的应用

(1)将递归变为循环

如:逆序打印链表

// 递归方式
void printList(Node head){
  if(null != head){
    printList(head.next);
    System.out.print(head.val + " ");
 }
}
// 循环方式
void printList(Node head){
  if(null == head){
    return;
 }
 
  Stack<Node> s = new Stack<>();
  // 将链表中的结点保存在栈中
  Node cur = head;
  while(null != cur){
    s.push(cur);
    cur = cur.next;
 }

四、栈,虚拟机栈,栈帧有什么区别

栈是一个数据结构

虚拟机栈是一个jvm的一块内存

栈帧是函数调用的时候java虚拟机栈上创建的一块内存 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值