美文网首页数据Java数据结构程序员
数据结构之栈(java版)

数据结构之栈(java版)

作者: sunxiaohang | 来源:发表于2017-03-17 10:49 被阅读61次

    本文力求简洁,只包含基础的栈功能,不想将大片的代码展示出来,让读者兴趣索然,阅读起来也十分费力,如有需要可以自行添加相关功能比如java.util.Stack包中的Stack类包含的peek()empty()等等函数.
    能力有限,有误之处还请不吝赐教

    定义内部类用于存储栈元素

        class Node {                                
            private Node below;   //指向下一个栈元素的reference                  
            private T type;           //泛型元素                                             
            public Node(Node below, T type) {       
                this.below = below;                 
                this.type = type;                   
            }                                       
        } 
    

    Push()方法

        public void push(T element) {               
            if (top == null) {                      
                Node node = new Node(null, element);
                this.top = node;                    
                this.base = node;                   
                length++;                           
            } else {                                
                Node node = new Node(top, element); 
                this.top = node;                    
                length++;                           
            }                                       
        }   
    

    pop()方法

      public T pop() {                            
            if (top != null) {                      
                Node temp = top;                    
                if (temp.below != null) {           
                    top = temp.below;               
                    length--;                       
                } else {                            
                    this.base=null;                 
                    this.top=null;                  
                    length=0;                       
                }                                   
                return temp.type;                   
            } else return null;                     
        }                                                                                
        public int getLength() {                    
            return length;                          
        }  
    

    整体代码比较简单,这里不再赘述,有一定java基础的应该都能够看懂

    整体代码

    public class MyStack<T> {                       
        private Node base;                          
        private Node top;                           
        private int length = 0;                     
        class Node {                                
            private Node below;                     
            private T type;                                                        
            public Node(Node below, T type) {       
                this.below = below;                 
                this.type = type;                   
            }                                       
        }                                           
        public void push(T element) {               
            if (top == null) {                      
                Node node = new Node(null, element);
                this.top = node;                    
                this.base = node;                   
                length++;                           
            } else {                                
                Node node = new Node(top, element); 
                this.top = node;                    
                length++;                           
            }                                       
        }                                           
        public boolean isEmpty(){                   
            if(base==null){                         
                return true;                        
            }else return false;                     
        }                                           
        public T pop() {                            
            if (top != null) {                      
                Node temp = top;                    
                if (temp.below != null) {           
                    top = temp.below;               
                    length--;                       
                } else {                            
                    this.base=null;                 
                    this.top=null;                  
                    length=0;                       
                }                                   
                return temp.type;                   
            } else return null;                     
        }                                                                                
        public int getLength() {                    
            return length;                          
        }                                                                                        
        @Override                                   
        public String toString() {                  
            StringBuffer sb = new StringBuffer();   
            Node current = top;                     
            while (current != null) {               
                sb = sb.append("/"+current.type);   
                current = current.below;            
            }                                       
            return sb.toString();                   
        }                                           
        public static void main(String[] args) {    
            MyStack<String> ms=new MyStack<>();     
            System.out.println(ms.getLength());     
            ms.push("value1");                      
            ms.push("value2");                      
            ms.push("value3");                      
            System.out.println(ms.getLength());     
            System.out.println(ms.pop());           
            System.out.println(ms.pop());           
            System.out.println(ms.getLength());     
            System.out.println(ms.toString());      
        }                                           
    }   
    
    更多关于java的文章请戳这里:(您的留言意见是对我最大的支持)

    我的文章列表
    Email:sxh13208803520@gmail.com

    相关文章

      网友评论

        本文标题:数据结构之栈(java版)

        本文链接:https://www.haomeiwen.com/subject/ooxenttx.html