接上次链表的基本操作后
定义一个新节点 ‘reverseList’ 作为一个新链表的头节点
// 临时变量cur表示遍历的节点
// next 可看做一个容器,装cur节点
// reversetList 新链表
HeroNode cur = head.next;
HeroNode next = null;
HeroNode reversetList = new HeroNode(0, "", "");
空的和一个节点的表不用翻转
if ( head.next == null || head.next.next == null ) {
return;
}
遍历原来的节点,每取一个节点就放到 ‘reverseList’ 的最前面的位置
while ( cur != null ) {
next = cur.next; // 记录下一个节点的信息
cur.next = reversetList.next; // 将新节点从头节点后的所有节点移到cur的后面 现在想象cur后面有一堆以前的节点
reversetList.next = cur; // 将cur再拼到reversetList的后面
cur = next; // 将cur后移
}
将新链表的地址交给原链表
head.next = reversetList.next;
完整方法实现
public static void reversetList( HeroNode head ) {
// 临时变量cur表示遍历的节点
// next 可看做一个容器,装cur节点
// reversetList 新链表
HeroNode cur = head.next;
HeroNode next = null;
HeroNode reversetList = new HeroNode(0, "", "");
// 空和一个不用转
if ( head.next == null || head.next.next == null ) {
return;
}
while ( cur != null ) {
next = cur.next; // 记录下一个节点的信息
cur.next = reversetList.next; // 将新节点从头节点后的所有节点移到cur的后面 现在想象cur后面有一堆以前的节点
reversetList.next = cur; // 将cur再拼到reversetList的后面
cur = next; // 将cur后移
}
// 链表转移
head.next = reversetList.next;
}