当前位置: 首页 > news >正文

无锡网站制作一般多少钱福建seo优化

无锡网站制作一般多少钱,福建seo优化,新网站做seo,沈丘网站建设文章目录 栈(Stack)一、 栈的概念1.栈的方法2.源码分析 二、MyStack的实现1.MyStack的成员变量2.push方法3.isEmpty方法和pop方法4.peek方法 三、栈的应用1.将递归转化为循环1.调用递归打印2.通过栈逆序打印链表 栈(Stack) 一、 栈…

文章目录

  • 栈(Stack)
    • 一、 栈的概念
      • 1.栈的方法
      • 2.源码分析
    • 二、MyStack的实现
      • 1.MyStack的成员变量
      • 2.push方法
      • 3.isEmpty方法和pop方法
      • 4.peek方法
    • 三、栈的应用
      • 1.将递归转化为循环
        • 1.调用递归打印
        • 2.通过栈逆序打印链表


栈(Stack)


一、 栈的概念

  • 栈:先进后出,后进先出
  • 在这里插入图片描述

1.栈的方法

  • push 压栈,栈的插入操作,插入栈顶
  • pop 出栈,栈的删除操作,从栈顶删除
  • peek 查看栈顶的元素,不进行改变
  • size 查看栈的大小
  • isEmpty 判断栈是否为空
 public static void main(String[] args) {Stack<Integer> stack = new Stack<>();stack.push(1);//压栈,存进数据stack.push(2);stack.push(3);Integer pop = stack.pop();//出站System.out.println(pop);//取出3Integer peek = stack.peek();//查看栈顶的元素System.out.println(peek);//2Integer peek1 = stack.peek();System.out.println(peek);System.out.println(stack.size());//2boolean empty = stack.isEmpty();System.out.println(empty);//false}

2.源码分析

在这里插入图片描述

虽然栈自身的方法少,但是继承了Vector,可以调用Vector里面的方法
Vector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的

在这里插入图片描述

栈的底层由数组组成,因为栈继承自Vector,Vector的底层是一个数组
所以也叫顺序栈

二、MyStack的实现

1.MyStack的成员变量

public class MyStack {public int[] elem;public int userSize;public MyStack() {this.elem = new int[10];}

定义存储数据的elem数组
定义数组的使用大小
通过构造器,创建数组的大小

2.push方法

    public void push(int val) {//压栈if (isFull()) {//判断是否满了elem = Arrays.copyOf(elem, elem.length * 2);//扩容}elem[userSize++] = val;//后置++,}public boolean isFull() {return userSize == elem.length;}

1.要插入元素,先通过isFull方法判断数组是否满了
2.如果满了进行2倍的扩容
3.val值存进userSize索引的数组内
4.userSize++是后置的++,在存入到elem[userSize]位置后,userSize加一

3.isEmpty方法和pop方法

 public int pop() {//出栈if (isEmpty()){throw new EmptyException("栈是空的");}/* int val = elem[userSize-1];userSize--;return val;*//*   userSize--;return elem[userSize];*/return elem[--userSize];//前置-- 先--再返回下标的值}public boolean isEmpty() {return userSize == 0;}

1.先写isEmpty方法,如果userSize等于0,证明栈为空
2.在pop方法,调用isEmpty方法,如果为空,抛出异常
3.返回userSize减1后,数组中下标的值(注意前置–)

4.peek方法

    public int peek(){if (isEmpty()){throw new EmptyException("栈是空的");}return elem[userSize-1];}

先判断是否为空,不为空,返回userSize-1处数组的值

三、栈的应用

1.将递归转化为循环

逆序打印链表

1.调用递归打印
  public void disPlay2(ListNode pHead) {if (pHead == null) {return;}if (pHead.next==null){System.out.print(pHead.val+" ");return;}disPlay2(pHead.next);System.out.println(pHead.val+" ");}

直到头结点的下一个结点为空时,打印头结点的值,否则移动头结点,再次执行
将最后的结点打印完后,返回到上一步打印,依次完成逆序打印

2.通过栈逆序打印链表
 public void disPlay3(){Stack<ListNode> stack = new Stack<>();ListNode cur = head;while (cur!=null){//遍历链表,压栈stack.push(cur);cur = cur.next;}//遍历栈while (!stack.isEmpty()){ListNode pop = stack.pop();System.out.println(pop.val);//依次出栈打印取出的pop的值}System.out.println();}

1.先遍历链表,依次压栈
2.遍历栈,当栈不为空的时候,依次取出栈,打印取出结点的val值
3.完成逆序打印

点击移步博客主页,欢迎光临~

偷cyk的图

http://www.hkea.cn/news/309271/

相关文章:

  • 武汉外贸网站建设公司外链相册
  • java做网站的权限管理seo描述是什么
  • 招聘网最新招聘信息网武汉seo计费管理
  • 直播软件开发源码重庆seo顾问
  • 公司网站如何做宣传百度视频推广怎么收费
  • 淄博市 网站建设报价郑州seo外包阿亮
  • 网络服务商是指什么网站优化排名工具
  • 网站优化的分析比较好的品牌策划公司有哪些
  • 国外比较好的资源网站电商运营推广是做什么的
  • 佛山房地产网站建设seo实战培训王乃用
  • 如何做可以赚钱的网站关键词如何快速排名
  • 深圳品牌做网站公司有哪些百度app推广
  • 重庆建设行业信息网站搜狗登录入口
  • 同仁行业网站建设报价北京做的好的seo公司
  • 陕西自助建站做网站郑州外语网站建站优化
  • 小型企业网站系统cilimao磁力猫最新版地址
  • 铁岭网站建设移动网站广东网站seo
  • 网站模板插件sem和seo
  • 用wordpress制作网站模板沈阳seo
  • 优化一个网站多少钱宜昌网站seo
  • 刚做的网站怎么才能搜索到枸橼酸西地那非片功效效及作用
  • 罗湖区网站公司专业模板建站
  • 哪有备案好的网站国产系统2345
  • 网站开发怎么让别人看到最新营销模式有哪些
  • ssm网站开发源码百度推广多少钱一个月
  • 手游门户网站建设appstore关键词优化
  • 齐河网站开发seo服务内容
  • 北京微信网站建设费用想卖产品怎么推广宣传
  • 网站上线的步骤厦门网站推广公司哪家好
  • 网站做app的软件有哪些百度一下你就知道下载