成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

數(shù)據(jù)結(jié)構(gòu)之棧(java版)

hizengzeng / 1582人閱讀

摘要:本文力求簡(jiǎn)潔,只包含基礎(chǔ)的棧功能,不想將大片的代碼展示出來(lái),讓讀者興趣索然,閱讀起來(lái)也十分費(fèi)力,如有需要可以自行添加相關(guān)功能比如包中的類(lèi)包含的,等等函數(shù)能力有限,有誤之處還請(qǐng)不吝賜教定義內(nèi)部類(lèi)用于存儲(chǔ)棧元素指向下一個(gè)棧元素的泛型元素方法方法

本文力求簡(jiǎn)潔,只包含基礎(chǔ)的棧功能,不想將大片的代碼展示出來(lái),讓讀者興趣索然,閱讀起來(lái)也十分費(fèi)力,如有需要可以自行添加相關(guān)功能比如java.util.Stack包中的Stack類(lèi)包含的peek(),empty()等等函數(shù).
能力有限,有誤之處還請(qǐng)不吝賜教

定義內(nèi)部類(lèi)用于存儲(chǔ)棧元素
    class Node {                                
        private Node below;   //指向下一個(gè)棧元素的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;                          
    }  

整體代碼比較簡(jiǎn)單,這里不再贅述,有一定java基礎(chǔ)的應(yīng)該都能夠看懂

整體代碼
public class MyStack {                       
    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 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());      
    }                                           
}   
更多關(guān)于java的文章請(qǐng)戳這里:(您的留言意見(jiàn)是對(duì)我最大的支持)

我的文章列表

Email:[email protected]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/66963.html

相關(guān)文章

  • 源碼|jdk源碼之棧、隊(duì)列及ArrayDeque分析

    摘要:棧隊(duì)列雙端隊(duì)列都是非常經(jīng)典的數(shù)據(jù)結(jié)構(gòu)。結(jié)合了棧和隊(duì)列的特點(diǎn)。因此,在中,有棧的使用需求時(shí),使用代替。迭代器之前源碼源碼之與字段中分析過(guò),容器的實(shí)現(xiàn)中,所有修改過(guò)容器結(jié)構(gòu)的操作都需要修改字段。 棧、隊(duì)列、雙端隊(duì)列都是非常經(jīng)典的數(shù)據(jù)結(jié)構(gòu)。和鏈表、數(shù)組不同,這三種數(shù)據(jù)結(jié)構(gòu)的抽象層次更高。它只描述了數(shù)據(jù)結(jié)構(gòu)有哪些行為,而并不關(guān)心數(shù)據(jù)結(jié)構(gòu)內(nèi)部用何種思路、方式去組織。本篇博文重點(diǎn)關(guān)注這三種數(shù)據(jù)結(jié)構(gòu)...

    ZHAO_ 評(píng)論0 收藏0
  • 利用PHP實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)之棧(小白系列文章四)

    摘要:堆棧算法引子棧是計(jì)算機(jī)術(shù)語(yǔ)中比較重要的概念,實(shí)質(zhì)上棧就是一段內(nèi)存區(qū)域,但是棧滿足一定的特性,那就是只有一個(gè)口,具有先入后出的特性,這種特性在計(jì)算機(jī)中有很廣泛的運(yùn)用。 /** * PHP堆棧算法 * Created on 2017-4-27 * Author entner * Email [email protected] */ 引子 ????棧...

    array_huang 評(píng)論0 收藏0
  • 利用PHP實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)之棧(小白系列文章四)

    摘要:堆棧算法引子棧是計(jì)算機(jī)術(shù)語(yǔ)中比較重要的概念,實(shí)質(zhì)上棧就是一段內(nèi)存區(qū)域,但是棧滿足一定的特性,那就是只有一個(gè)口,具有先入后出的特性,這種特性在計(jì)算機(jī)中有很廣泛的運(yùn)用。 /** * PHP堆棧算法 * Created on 2017-4-27 * Author entner * Email [email protected] */ 引子 ????棧...

    yankeys 評(píng)論0 收藏0
  • js數(shù)據(jù)結(jié)構(gòu)之棧

    摘要:向一個(gè)棧插入新元素又稱作進(jìn)棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素從一個(gè)棧刪除元素又稱作出棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。 棧(stack)又名堆棧,它是一種運(yùn)算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。這一端被稱為棧頂,相對(duì)地,把另一端稱為棧底。向一個(gè)棧插入新元素又稱作進(jìn)棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素...

    LeviDing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<