美文网首页
基础数据结构

基础数据结构

作者: Lemon_Home | 来源:发表于2017-09-27 10:23 被阅读21次

    栈结构:

    import java.util.Iterator;
    public class Stack<Item> implements Iterable<Item> {
    
        private int num;
        private Node first;
    
        private class Node {
            Item item;
            Node next;
        }
    
        public boolean isEmpty() {
            return num == 0;
        }
    
        public int size() {
            return num;
        }
    
        public void push(Item item) {
            Node oldfirst = first;
            first = new Node();
            first.item = item;
            first.next = oldfirst;
            num++;
        }
    
        public Item pop() {
            Item item = first.item;
            first = first.next;
            num--;
            return item;
        }
    
        @Override
        public Iterator<Item> iterator() {
            return new StackIterator();
        }
    
        private class StackIterator implements Iterator<Item> {
            private Node current = first;
    
            @Override
            public boolean hasNext() {
                return current != null;
            }
    
            @Override
            public Item next() {
                Item item = current.item;
                current = current.next;
                return item;
            }
    
            @Override
            public void remove() {
    
            }
        }
    }
    

    队列:

    import java.util.Iterator;
    public class Queue<Item> implements Iterable<Item> {
        private Node first;
        private Node last;
        private int num;
    
        private class Node {
            Item item;
            Node next;
        }
    
        public boolean isEmpty() {
            return num == 0;
        }
    
        public int size() {
            return num;
        }
    
        public void enqueue(Item item) {
            Node oldlast = last;
            last = new Node();
            last.item = item;
            last.next = null;
            if (isEmpty()) {
                first = last;
            } else {
                oldlast.next = last;
            }
            num++;
        }
    
        public Item dequeue() {
            Item item = first.item;
            first = first.next;
            if (isEmpty()) {
                last = null;
            }
            num--;
            return item;
        }
    
        @Override
        public Iterator iterator() {
            return new QueueIterator();
        }
    
        private class QueueIterator implements Iterator<Item> {
            private Node current = first;
    
            @Override
            public boolean hasNext() {
                return current != null;
            }
    
            @Override
            public Item next() {
                Item item = current.item;
                current = current.next;
                return item;
            }
    
            @Override
            public void remove() {
    
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:基础数据结构

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