java栈的链表实现问题

这个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++;
}
}

3个回答

其实就是把新的值放在头部,旧值移到后面!!!
还是链表!!!!

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的链表结构,再看它就好一点,起初不太好理解

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问