Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 514|回复: 0

[算法学习]java栈的实现(用数组)。

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-12-2 00:06:30 | 显示全部楼层 |阅读模式
    众所周知,程序运行的时候,内存的栈区会保留很多运行程序的必要信息。栈是一种很简单的数据结构,有自己的一些固有的特性,比如说先进后出,具体的应用有很多,数制转换,括号匹配等都会用到。下面我把本人写的一种实现和大家一起分享:
    首先,我把栈里的每个元素都看成一个节点,节点类代码如下:
    1. /**  
    2. * @author Li Ming  
    3. *  
    4. */  
    5. public class StackNode< T> {   
    6.     //要存储的信息   
    7.     private T info;   
    8.       
    9.     public StackNode()   
    10.     {   
    11.         this(null);   
    12.     }   
    13.       
    14.     public StackNode(T info)   
    15.     {   
    16.         this.info = info;   
    17.     }   
    18.       
    19.     //set方法   
    20.     public void set(T info)   
    21.     {   
    22.         this.info = info;   
    23.     }   
    24.       
    25.     //get方法   
    26.     public T get()   
    27.     {   
    28.         return info;   
    29.     }   
    30. }  
    31. 然后,是栈的实现了,这才是关键:
    32. /**  
    33. * @author Li Ming  
    34. *  
    35. */  
    36. public class Stack< T> {   
    37.     //储存数据的栈   
    38.     private StackNode< T> stack[];   
    39.       
    40.     //栈的最大容量   
    41.     private int maxSize;   
    42.       
    43.     //栈的当前容量   
    44.     private int size;   
    45.       
    46.     //不传参数,默认栈的最大容量为100   
    47.     public Stack()   
    48.     {   
    49.         this(100);   
    50.     }   
    51.       
    52.     public Stack(int maxSize)   
    53.     {   
    54.         //如果传入的参数小于或等于0,则设置最大容量为100   
    55.         if(maxSize <= 0)   
    56.             maxSize = 100;   
    57.         this.maxSize = maxSize;   
    58.     }   
    59.       
    60.     //初始化栈,在堆中先申请好内存空间   
    61.     public void initStack()   
    62.     {   
    63.         StackNode< T>[] stackNodes = new StackNode[maxSize];   
    64.         stack = stackNodes;   
    65.         for(int i = 0; i < maxSize; i++)   
    66.         {   
    67.             stack[i] = new StackNode< T>();   
    68.         }   
    69.         //栈的当前大小为0   
    70.         size = 0;   
    71.     }   
    72.       
    73.     //栈的基本方法之一,获得栈顶元素   
    74.     public StackNode< T> getTop()   
    75.     {   
    76.         //栈中没有元素,则返回空   
    77.         if(size == 0)   
    78.             return null;   
    79.         return stack[size];   
    80.     }   
    81.       
    82.     //栈的基本方法之一,入栈   
    83.     public boolean push(StackNode< T> stackNode)   
    84.     {   
    85.         //栈已满,入栈失败   
    86.         if(size >= maxSize)   
    87.             return false;   
    88.         size++;   
    89.         stack[size-1] = stackNode;   
    90.         return true;   
    91.     }   
    92.       
    93.     //栈的基本方法之一,出栈   
    94.     public StackNode< T> pop()   
    95.     {   
    96.         //如果栈已空,则返回null   
    97.         if(size <= 0)   
    98.             return null;   
    99.         size--;   
    100.         return stack[size];   
    101.     }   
    102.       
    103.     //栈是否为空   
    104.     public boolean isEmpty()   
    105.     {   
    106.         if(size <= 0)   
    107.             return true;   
    108.         return false;   
    109.     }   
    110.       
    111.     //栈的基本方法之一,遍历栈   
    112.      public void traverse()   
    113.      {   
    114.          for(int i = 0; i < size; i++)   
    115.          {   
    116.              System.out.println(stack[i].get());   
    117.          }   
    118.      }   
    119.         
    120.      public static void main(String []agrs)   
    121.      {   
    122.          Stack< String> stack = new Stack< String>();   
    123.          stack.initStack();   
    124.          stack.push(new StackNode< String>("Anybody1"));   
    125.          stack.push(new StackNode< String>("Anybody2"));   
    126.          stack.push(new StackNode< String>("Anybody3"));   
    127.          stack.traverse();   
    128.      }   
    129. }  
    复制代码



       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/12/2/000629984.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 04:07 , Processed in 0.378762 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表