思路:
1.定义一个新的链表;
2.从头到尾遍历原来的链表,每遍历一个节点,将其取出,并且将其放在新的链表的最前端,也就是第一个有效结点;
3.将原来的链表的head.next = 新的链表的head.next。
主要代码:
public void reverSetList(){ //如果链表为空或者链表只有一个元素,无需反转 if(this.head.next == null || this.head.next.next == null){ return; } //定义一个辅助变量,遍历原来的链表 Node index = this.head.next; Node cur = null; //指向当前节点[index]的下一个节点 Node reverHead = new Node<E>((E)new Object(),null); //定义一个新的节点 //遍历原来的链表 while (index != null){ cur = index.next;//暂时保存当前节点的下一个节点 index.next = reverHead.next; //将index的下一个节点指向新链表的最前端 reverHead.next = index; index = cur; //index后移 } this.head.next = reverHead.next; //原来链表指向新的节点的最前端 }
原文:https://www.cnblogs.com/128-cdy/p/12197869.html