zoukankan      html  css  js  c++  java
  • 栈的实现

    栈(stack)是简单的数据结构,但在计算机中使用广泛。它是有序的元素集合。栈最显著的特征是LIFO (Last In, First Out, 后进先出)。当我们往箱子里存放一叠书时,先存放的书在箱子下面,我们必须将后存放的书取出来,才能看到和拿出早先存放的书。

    实现代码如下(基于数组):

     1 package DataStructure.Stack_Queue.Stack;
     2 
     3 public class Stack {
     4     private int maxSize; //size of stack array
     5     private long[] stackArray;//item container
     6     private int top;//  stack top pointer
     7     
     8     public Stack(int size){
     9         maxSize  = size;
    10         stackArray = new long[maxSize];
    11         top = -1;  //初始化时  栈顶指针 指向-1
    12     }
    13     
    14     /**
    15      * 
    16     * @Description: 压栈操作 
    17     * @param value  
    18     * @return void      
    19     * @author: zhaob
    20     * @date: 2013-4-26 上午05:21:22
    21      */
    22     public void push(long value)  {
    23          top++;//栈顶指针 加1
    24          stackArray[top] = value;  //将栈顶指针指向的item赋值为value
    25     }
    26     
    27     /**
    28      * 
    29     * @Description:  出栈操作 
    30     * @return void      
    31     * @author: zhaob
    32     * @date: 2013-4-26 上午05:23:46
    33      */
    34     public long pop()  {
    35          long returnVlaue = stackArray[top];//将栈顶指针所指的item的值取出
    36          top--;//栈顶指针减一
    37          return  returnVlaue;
    38     }
    39     
    40     /**
    41      * 
    42     * @Description:查看栈顶指针 
    43     * @return  
    44     * @return long      
    45     * @author: zhaob
    46     * @date: 2013-4-26 上午05:26:11
    47      */
    48     public long peek()  {
    49          return this.stackArray[this.top];
    50     }
    51     
    52     /**
    53     * @Description:判断当前栈是否为空  如果为空 返回true  如果不为空 返回false 
    54     * @return boolean      
    55     * @author: zhaob
    56     * @date: 2013-4-26 上午05:27:04
    57      */
    58     public boolean isEmpty()  {
    59         return (this.top == -1);
    60     }
    61     
    62     /**
    63     * @Description:判断当前栈是否为满  如果满返回true如果不满 返回false 
    64     * @return  
    65     * @return boolean      
    66     * @author: zhaob
    67     * @date: 2013-4-26 上午05:29:00
    68      */
    69     public boolean isFull(){
    70         return (this.top == this.maxSize-1);
    71     }
    72     
    73     
    74 }

     栈初始化

  • 相关阅读:
    套接字中的setsockopt接口功能
    memmove()函数介绍
    static 关键字和类的加载顺序
    Navicat 链接mysql 显示 Clinet dose not support authentication protocol request by server ;consider upgrading MySQL client
    maven项目引入依赖之后,jar包没有自动导入报错
    @RequestParam 和@RequestBody 的区别?
    java中 & ^ ~ 的运算
    form表单post请求乱码问题
    struts2+hibernate3.2分页
    AJAX建立和服务器连接,接收服务器技术处理服务器返回的数据
  • 原文地址:https://www.cnblogs.com/zhaobing/p/3062627.html
Copyright © 2011-2022 走看看