题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
public class ListDemo{
public static void main(String[] args) {
/**
*
* 构造链表
*
* */
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
head.next.next.next.next = new ListNode(5);
head.next.next.next.next.next = new ListNode(6);
head.next.next.next.next.next.next = new ListNode(7);
head.next.next.next.next.next.next.next = null;
ListNode head2 = changeList(head);
printList(head2);
}
/**
*
* 打印链表
* */
private static void printList(ListNode head2) {
while(head2 != null){
System.out.print(head2.value+" ");
head2 = head2.next;
}
}
/**
*
* 链表反转
* */
private static ListNode changeList(ListNode head) {
//当链表为空或只有一个元素时直接返回
if(head == null || head.next == null){
return head;
}
ListNode current = head.next;
head.next = null;
while(current != null){
ListNode temp = current.next;
current.next = head;
head = current;
current = temp;
}
return head;
}
}
/**
*
* 链表节点
* */
class ListNode {
public int value;
public ListNode next;
public ListNode(int value) {
super();
this.value = value;
}
public ListNode() {
super();
}
}