一、图解
二、完整代码(也是写在实现类里的方法)
//链表反转的问题 public void reverse() { if (size == 0 || size == 1) { return; } Node dummpyHead = new Node(); //虚拟头结点 //再创建一个p刚开始指向头节点head Node p = head; //然后从head开始往后遍历 for (int i = 0; i < size; i++) { //定义一个新的节点接收从head节点往后开始遍历的节点 Node n = new Node(p.data); //如果虚拟头结点的吓一跳为空则后面一个值还没添加呢 //直接令尾节点为n //否则的话就是遍历到第二个元素以后了 if (dummpyHead.next == null) { tail = n; } //当在虚拟头节点添加第一个元素是dummpyHead.next==null n.next = dummpyHead.next; dummpyHead.next = n; p = p.next; } head = dummpyHead.next; }