这个push入栈方法是怎么实现的,每条语句都分别是什么意思
public class Stack implements Iterable{
private Node first;
private int n;
private static class Node{
private Item item;
private Node next;
}
------------------------------------------------------------------------------
public void push (Item item) {
Node oldfirst = first ; //??
first = new Node(); //??
first.item=item; //??
first.next=oldfirst; //??
n++;
}
}
其实就是把新的值放在头部,旧值移到后面!!!
还是链表!!!!
Node oldfirst = first 是oldfirst指向first所在的地址(引用类型),刚开始指向的是null.接着first = new Node();可以理解成新建一个节点,里面有item和next指针
first.item=item;是把item值赋给新建节点的item,first.next=oldfirst;就是first.next指向oldfirst的地址,oldfirst的作用是用来记录前一个节点,最后把
oldfirst给新建节点,就是把前一个节点给新建节点的first.next。每次取值时必须沿着链一直走,知道找到想要的值。查找值时依赖的是next指针。
可以先看一下c的链表结构,再看它就好一点,起初不太好理解