链表实现栈Java

链表实现栈-Java

package MyStack;

/**
 * 链表实现
 * @param <AnyType>
 */
public class MyStackLinked<AnyType> {
    private int theSize;
    private Node<AnyType> head;
    private Node<AnyType> tail;

    public MyStackLinked() {}

    private static class Node<AnyType> {
        private AnyType data;
        private Node<AnyType> next;

        public Node(AnyType x, Node<AnyType> n) {
            data = x;
            next = n;
        }
    }

    public int size() {
        return theSize;
    }

    public boolean isEmpty() {
        return theSize == 0;
    }

    public void push(AnyType data) {
        Node<AnyType> newNode = new Node<AnyType>(data, null);
        if (size() == 0) {
            head = newNode;
            tail = newNode;
            theSize++;
        } else {
            newNode.next = head;
            head = newNode;
            theSize++;
        }
    }

    public AnyType pop() {
        if (size() == 0) {
            throw new IndexOutOfBoundsException("empty");
        }
        AnyType item = head.data;
        head = head.next;
        theSize--;
        return item;
    }

    public AnyType top() {
        if (size() == 0) {
            throw new IndexOutOfBoundsException("empty");
        }
        return head.data;
    }
}

测试

package MyLinkedList;

public class MyLinkedListTest {
    public static void main(String[] args) {
        MyLinkedList<String> mll = new MyLinkedList<String>();
        mll.add("a");
        mll.add("b");
        mll.add("c");

        for (String s : mll) {
            System.out.println(s);
        }

        mll.set(2, "cc");

        String str = mll.get(2);
        System.out.println(str);

        System.out.println(mll.size());

        System.out.println(mll.isEmpty());

        mll.remove(1);

        for (String s : mll) {
            System.out.println(s);
        }

        System.out.println("clear");
        mll.clear();

        for (String s : mll) {
            System.out.println(s);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值