public void reslist(Node head){//传入原先链表的头结点
Node temp = head.next;//定义一个辅助变量,帮助遍历原来链表
Node next = null;//用以指向temp的下一个节点
Node reshead = new Node(0,"",null);//定义一个新的头节点,用来反转
while(temp != null){//循环遍历原来的链表,并把每一个元素依次取出放在新链表的前面,使得反转
next = temp.next;//保留原来链表的顺序,保证temp能够后移指向下一个节点
temp.next = reshead.next;
reshead.next = temp;//与上一行代码的共同功能是把取出的节点插入到新链表的最前端,完成链表的反转
temp = next;将temp后移
}
head.next = reshead.next;//将原来的链表指向新的链表,完成反转
}
单链表的反转需要一个新的链表的作为辅助,保证了代码的简洁。
//声明:该节点有三个元素,序号id,姓名name,连接点next(Node类)