注意setget方法输入
static的使用场景
自定义ListNode类
清楚链表结构next的含义。什么时候是指针,什么时候是值
public class NC78 {
/**
* 链表结构
*/
@Data
static class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public static ListNode ReverseList(ListNode head) {
if (head == null)
return head;
ListNode pre = head;// 上一结点
ListNode cur = head.getNext();// 当前结点
ListNode tmp;// 临时结点,用于保存当前结点的指针域(即下一结点)
while (cur != null) {// 当前结点为null,说明位于尾结点
tmp = cur.getNext();
cur.setNext(pre);// 反转指针域的指向
// 指针往下移动
pre = cur;
cur = tmp;
}
// 最后将原链表的头节点的指针域置为null,还回新链表的头结点,即原链表的尾结点
head.setNext(null);
return pre;
}
public static void main(String[] args) {
ListNode node1=new ListNode(1);
ListNode node2=new ListNode(2);
ListNode node3=new ListNode(3);
ListNode head=new ListNode(0);
head.setNext(node1);
node1.setNext(node2);
node2.setNext(node3);
ListNode h=head;
System.out.println("******");
while (null!=h){
System.out.print(h.getVal()+" ");
h=h.getNext();
}
System.out.println("\n******");
ListNode listNode = ReverseList(head);
while (null!=listNode){
System.out.print(listNode.getVal()+" ");
listNode=listNode.getNext();
}
System.out.println("\n******");
}}

京公网安备 11010502036488号