注意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******"); }
}