zoukankan      html  css  js  c++  java
  • 线性结构--栈

      栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

    创建MyStak栈及其方法

     1 package com.feimao.com.feimao.a2.test;
     2 
     3 public class MyStack {
     4     int[] elements;
     5     public MyStack(){
     6         elements = new int[0];
     7     }
     8     //压入元素
     9     public void push(int element){
    10         int[] newArr = new int[elements.length + 1];
    11         for(int i = 0 ; i < elements.length ; i++){
    12             newArr[i] = elements[i];
    13         }
    14         newArr[elements.length] = element;
    15         elements = newArr;
    16     }
    17     //取出栈顶元素
    18     public int pop() {
    19         if (elements.length == 0) {
    20             throw new RuntimeException("stack is empty");
    21         }
    22         //取出数组中最后1个元素
    23         int element = elements[elements.length - 1];
    24         //创建一个新数组
    25         int[] newArr = new int[elements.length - 1];
    26         //除了最后一个取走的元素,其他元素复制到新数组
    27         for (int i = 0; i < elements.length - 1; i++) {
    28             newArr[i] = elements[i];
    29         }
    30         //替换数组
    31         elements = newArr;
    32         //返回栈顶元素
    33         return element;
    34     }
    35     //查看栈顶元素
    36     public int peek(){
    37         return elements[elements.length - 1];
    38         }
    39 
    40 
    41 
    42 
    43 }

    创建测试类

     1 package com.feimao.com.feimao.a2.test;
     2 
     3 import java.util.Arrays;
     4 
     5 public class MyStackTest {
     6     public static void main(String[] args){
     7         MyStack ms = new MyStack();
     8         for(int i = 0 ; i < 10 ; i++){
     9             ms.push(i);
    10         }
    11         System.out.println(ms.peek());
    12         System.out.println(ms.pop());
    13 
    14 
    15 
    16     }
    17 }

  • 相关阅读:
    数据不须要自由,但须要做爱
    编程算法基础-3.2自底向上风格
    Linux管道符
    阿里云 oss python3 样例
    6. Laravel5学习笔记:IOC/DI的理解
    LNMP环境搭建——MySQL篇
    在奋斗的日子里,傻笑出来(三)
    捕获海康威视IPCamera图像,转成OpenCV能够处理的图像(一)
    vs 默认的INC和LIB
    一款DIY移动电源的性能
  • 原文地址:https://www.cnblogs.com/feimaoyuzhubaobao/p/10161586.html
Copyright © 2011-2022 走看看