单向链表:如何理解这节代码?

img

这里的p是如何跳到下一个节点去的?
求个详细解释,万分感谢!
(凑个字数不好意思)

这个是不是数组模拟链表啊,a的第一维表示节点数组,第二维的两个数表示当前节点的值和下一个节点的下标,如果用对象的方式对应一下应该是这样。

class Node {
    T val; // a[][0]

    Node next; // a[][1]
    // next = null <==> a[][1] = -1
}