自己写Stack 实现栈结构

www.allocmem.com · · 4708 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

前言:

栈的应用:

1. 可计算数学后缀表达式
2. 把正常中缀表达式转换为后缀表达式
3. 计算检测编译程序{}等括号符号是否正确,是否存在语法错误
4. 递归中需要实用栈存储方法信息,计算机中函数调用是通过栈(stack)这种数据结构实现,在递归中调用一层函数,栈就会加一层栈帧,每当函数返回,栈就会减少一层栈帧。

正文:

  1. java中使用数组实现栈

    	package com.anteoy.dataStructuresAndAlgorithm.javav2;
    
    
    	    import java.util.ArrayList;
    
    
    	    /**
    	     * Created by zhoudazhuang on 17-3-1.
    	     * Description:
    	     */
    	    public class ListGo {
    
    
    	        public static void main(String[] args) {
    	            ArrayList arrayList = new ArrayList();
    	            arrayList.add(1);
    	            arrayList.add(2);
    	            arrayList.add(3);
    
    
    	            //进栈
    	            arrayList.add(arrayList.size(),2);
    
    
    	            //出栈
    	            arrayList.remove(arrayList.size()-1);
    
    
    	            System.out.println(arrayList);
    	        }
    	    }
    
  2. java中LinkedList实现栈

        package com.anteoy.dataStructuresAndAlgorithm.javav2.my;
    
    
            import java.util.LinkedList;
    
    
            /**
            * Created by zhoudazhuang on 17-3-2.
            * Description:
            */
            public class StackByLinkedList {
    
    
            public static void main(String[] args) {
                useLinkedListAsLIFO();
            }
            /**
             * 将LinkedList当作 LIFO(后进先出)的堆栈
             */
            private static void useLinkedListAsLIFO() {
                // 新建一个LinkedList
                LinkedList stack = new LinkedList();
    
    
                // 将1,2,3,4添加到堆栈中
                stack.push("1");
                stack.push("2");
                stack.push("3");
                stack.push("4");
                // 打印“栈”
                System.out.println(stack);
    
    
                // 删除“栈顶元素”
                System.out.println("stack.pop():"+stack.pop());
    
    
                // 取出“栈顶元素”
                System.out.println("stack.peek():"+stack.peek());
    
    
                // 打印“栈”
                System.out.println("stack:"+stack);
            }
            }
    

    后记:

  3. 尾递归和递归 局部变量栈在递归引用中,不能算尾递归

  4. 参考文献:数据结构与算法分析�

本文来自:www.allocmem.com

感谢作者:www.allocmem.com

查看原文:自己写Stack 实现栈结构

4708 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传