第一步写reversetList方法来实现
//将单链表反转 public static void reversetList(Node head){ //如果当前链表为空,或者只有一个节点,无需反转,直接返回 if (head.next == null || head.next.next == null){ return; } //定义一个辅助的指针(变量),帮助我们遍历原来的链表 Node cur = head.next; Node next = null;//指向当前节点[cur]的下一个节点 Node reverseHead = new Node(0,"",""); //遍历原来的链表,每遍历一个节点,就将其取出,并放在新的链表reverseHead的最前端 while (cur != null){ next = cur.next;//先暂时保存当前节点的下一个节点,因为后面需要使用 cur.next = reverseHead.next;//将cur的下一个节点指向新的链表最前端 reverseHead.next = cur;//将cur 连接到新的链表上 cur = next ;//让cur后移 } //将head.next 指向 reverseHead.next ,实现单链表的反转 head.next = reverseHead.next; }
第二步测试测试
//单链表反转 System.out.println("反转单链表"); reversetList(singleLinkedList.getHead()); singleLinkedList.list();