<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 22, comments - 32, trackbacks - 0, articles - 73
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    棧的特點:后進(jìn)先出,所以一個線性鏈表實現(xiàn)的棧也只能在一端操作才能滿足這種特性;


    /**
    * @Author: zzz
    * @CreateTime: 2017/3/27 14:51
    * @Description:
    */
    public class MyStack<T> {

    private Node top;//永遠(yuǎn)指向棧頂元素
    //元素個數(shù)
    private int size;


    /**
    * 內(nèi)部類,定義節(jié)點
    */
    private class Node {
    public T data;

    public Node next;

    public Node(T data, Node next) {
    this.data = data;
    this.next = next;
    }

    }

    public void push(T data) {
    //next 指向當(dāng)前元素top,如果是第一個元素next 指向null;
    Node node = new Node(data, top);
    //把當(dāng)前元素指向top
    top = node;
    size++;
    }


    public T pop() {
    Node oldNode = top;
    top = top.next;
    oldNode.next = null;
    //釋放引用
    return oldNode.data;
    }

    //返回棧頂?shù)脑兀怀鰲?br /> public T peek() {
    return top.data;

    }

    // 判斷鏈棧是否為空棧
    public boolean empty() {
    return size == 0;
    }

    public String toString() {
    // 鏈棧為空鏈棧時
    if (empty())
    return "[]";
    else {
    StringBuilder sb = new StringBuilder("[");
    for (Node current = top; current != null; current = current.next) {
    sb.append(current.data.toString() + ", ");
    }
    int len = sb.length();
    return sb.delete(len - 2, len).append("]").toString();

    }
    }

    public static void main(String[] args) throws Exception {
    MyStack stack = new MyStack<String>();
    for (int i = 0; i <= 10; i++) {
    stack.push("111111-" + i);
    }
    System.out.println(stack);
    System.out.println("frist pop="+stack.pop());
    System.out.println("second pop="+stack.pop());
    System.out.println("thrid pop="+stack.pop());
    System.out.println("pop 之后的"+stack);
    }

    /**
     * Created by zz.zhang on 2018/1/4.
     
    */
    public class MyStack<T> {

        private int DEFAULT_SIZE = 8;//定義棧的初始默認(rèn)長度
        private int capacity;//保存順序棧的長度
        private int size;//保存順序棧中元素的個數(shù)
        private Object[] elementData;//定義一個數(shù)組用于保存順序棧中的元素

        public MyStack() {
            capacity = DEFAULT_SIZE;
            elementData = new Object[capacity];
        }

        public MyStack(int initSize) {
            capacity = 1;
            while (capacity < initSize) {
                capacity <<= 1;//將capacity設(shè)置成大于initSize的最小2次方
            }
            elementData = new Object[capacity];
        }

        public void push(T element) throws Exception {
            elementData[size++] = element;
        }

        public T pop() throws Exception {
            if (empty()) {
                throw new IndexOutOfBoundsException("棧空,不能出棧");
            }
            T oldValue = (T) elementData[size - 1];
            elementData[--size] = null// 設(shè)置成null 讓JVM垃圾回收
            return oldValue;
        }
    public boolean empty() {
            return size == 0;
        }

        //返回當(dāng)前順序棧中元素的個數(shù)
        public int length() {
            return size;
        }

        //獲取棧頂元素,不會將棧頂元素刪除
        public T peek() throws Exception {
            if (size == 0)
                throw new ArrayIndexOutOfBoundsException("棧為空");
            return (T) elementData[size - 1];
        }

        public void clear() {
            for (int i = 0; i < size; i++) {
                elementData[i] = null;
            }
            size = 0;
        }

        public static void main(String[] args)throws Exception{
            MyStack<String> stack=new MyStack<String>(30);
            for(int i=0 ;i<30;i++){
                stack.push(String.valueOf(i));
            }
            System.out.println(stack.pop());
            System.out.println(stack.peek());
        }
    }




    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 一个人看的hd免费视频| 亚洲午夜国产精品无卡| 狼色精品人妻在线视频免费| 日韩电影免费在线观看视频| 亚洲中文字幕久久精品无码A| 国产精品视频免费观看| 久久久亚洲AV波多野结衣| 香蕉成人免费看片视频app下载| 亚洲Av综合色区无码专区桃色 | 男人的天堂亚洲一区二区三区 | 久久免费国产精品| 亚洲永久精品ww47| 青青草原1769久久免费播放| 亚洲AV无码日韩AV无码导航| 91麻豆国产免费观看| 亚洲男人天堂影院| 最近免费中文字幕大全| 老妇激情毛片免费| 国产自偷亚洲精品页65页| 人人揉揉香蕉大免费不卡| 亚洲精品美女久久久久| 成人性生交大片免费看午夜a| 美美女高清毛片视频黄的一免费| 亚洲欧洲精品成人久久曰影片 | 四虎永久精品免费观看| 日本激情猛烈在线看免费观看| 久久国产成人精品国产成人亚洲| 免费污视频在线观看| 亚洲噜噜噜噜噜影院在线播放| 免费网站看v片在线香蕉| 一边摸一边爽一边叫床免费视频 | 亚洲欧洲日产国码无码网站 | 成年免费大片黄在线观看com| 久久91亚洲人成电影网站| 67pao强力打造国产免费| 亚洲日本va一区二区三区| 亚洲中文字幕无码久久精品1| 88av免费观看| 免费人成网站永久| 91精品国产亚洲爽啪在线观看| 韩国日本好看电影免费看|