博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Algs4-1.3不定容数组实现泛型栈支持迭代
阅读量:6958 次
发布时间:2019-06-27

本文共 1104 字,大约阅读时间需要 3 分钟。

import java.util.Iterator;

public class ResizingArrayStack<Item> implements Iterable<Item>
{
    private Item[] a=(Item[]) new Object[1];
    private int N=0;
    public boolean isEmpty(){return N==0;}
    public int size(){return N;}
    private void resize(int max)
    {
        Item[] temp=(Item[]) new Object[max];
        for(int i=0;i<N;i++)
            temp[i]=a[i];
        a=temp;
    }//end resize
    public void push(Item item)
    {
        if(N==a.length) resize(2*a.length);
            a[N++]=item;
    }//end push
    public Item pop()
    {
        Item item=a[--N];
        a[N]=null;
        if(N>0 && N==a.length/4) resize(a.length/2);
        return item;
    }//end pop
    public Iterator<Item> iterator()
    {return new ReverseArrayIterator();}
   
    private class ReverseArrayIterator implements Iterator<Item>
    {
        private int i=N;
        public boolean hasNext(){return i>0;}
        public Item next(){return a[--i];}
        public void remove(){}
     }
   
    public static void main(String[] args)
    {
        ResizingArrayStack<String> s;
        s=new ResizingArrayStack();
        while(!StdIn.isEmpty())
        {
            String item=StdIn.readString();
            if(!item.equals("-"))
                s.push(item);
         }//end while
        for(String i:s)
            StdOut.printf(i+" ");
    }
}

转载于:https://www.cnblogs.com/longjin2018/p/9849260.html

你可能感兴趣的文章
一文看懂混淆代码——Java Decompiled过程和代码阅读
查看>>
React 16.8.6 发布,构建用户界面的 JavaScript 库
查看>>
Behavior-2
查看>>
TypeScript 发布 3.4 首个 RC 预览版
查看>>
ES6(Symbol)
查看>>
华丽转身再获新生?体验大陆集团深耕自动驾驶生态圈的最新技术与产品
查看>>
代码查看神器--Editplus
查看>>
Prometheus vs. Graphite:时序数据监控工具选择
查看>>
Flask入门的第一个项目
查看>>
MikroTik RouterOS旧版本下载地址收集
查看>>
嵌入式软件开发工程师谈软件架构的设计
查看>>
./configure、make、make install 命令详解
查看>>
Laravel Response
查看>>
【Java入门提高篇】Day24 Java容器类详解(七)HashMap源码分析(下)
查看>>
[20180417]使用10046事件需要什么权限.txt
查看>>
如果centos7添加新网卡,系统不识别的解决办法
查看>>
JMX监控zookeeper
查看>>
Anaconda 2019.03 发布,Python 跨平台科学计算软件
查看>>
JS中遍历语法的比较
查看>>
读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
查看>>