<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++博客   博問  
     
    主站蜘蛛池模板: youjizz亚洲| 一级特级aaaa毛片免费观看| 亚洲爆乳无码精品AAA片蜜桃| 青柠影视在线观看免费高清 | 免费一级毛片一级毛片aa| 亚洲嫩模在线观看| 免费一级全黄少妇性色生活片 | 亚洲一日韩欧美中文字幕在线| 在线观看片免费人成视频无码| 亚洲欧洲国产成人精品| 日韩插啊免费视频在线观看 | 国产精品99久久免费| 亚洲一区精品视频在线| 免费va在线观看| 最近免费2019中文字幕大全| 国产亚洲一区二区三区在线观看| 又长又大又粗又硬3p免费视频| 亚洲色偷偷综合亚洲AV伊人| 亚洲jizzjizz少妇| 婷婷亚洲综合五月天小说| 女人体1963午夜免费视频| 亚洲AV无码一区二区乱孑伦AS | 久久久精品国产亚洲成人满18免费网站 | 国产av天堂亚洲国产av天堂| 日韩电影免费在线观看| 国产成人人综合亚洲欧美丁香花 | 日韩免费视频在线观看| 亚洲av无码专区在线观看下载| 成年女人免费碰碰视频| 国产99在线|亚洲| 国产传媒在线观看视频免费观看| 人妻无码中文字幕免费视频蜜桃 | 亚洲av无码专区在线播放| 国产在线播放免费| 国产精彩免费视频| 亚洲综合激情五月色一区| 久久精品国产亚洲| 亚洲一区爱区精品无码| 最近中文字幕mv免费高清视频8| 91av免费在线视频| 亚洲精品亚洲人成在线麻豆|