化妆品网站建设规划书范文,做蛋糕比较火的网站,p2p网站开发费用,网站建设公司伟置目录 题目描述:
代码:
第一种:
第二种:
第三种:
第四种:
第五种:
主函数:
ListNode类: 题目描述:
给你单链表的头节点 head #xff0c;请你反转链表#xff0c;并返回反转后的链表。 示例 1#xff1a; 输入#xff1a;head [1,2,3,4,5]
输出#xff1a;[5,4,3…目录 题目描述:
代码:
第一种:
第二种:
第三种:
第四种:
第五种:
主函数:
ListNode类: 题目描述:
给你单链表的头节点 head 请你反转链表并返回反转后的链表。 示例 1 输入head [1,2,3,4,5]
输出[5,4,3,2,1]示例 2 输入head [1,2]
输出[2,1]示例 3
输入head []
输出[]
代码:
第一种:
构造一个新链表,从旧链表依次拿到每一个节点,创建新节点添加到新链表的头部,最后返回新链表的头节点 public ListNode reverseList1(ListNode o1) {ListNode n1 null;ListNode p o1;while (p ! null) {n1 new ListNode(p.val, n1);p p.next;}return n1;}
第二种:
构造一个新的链表,从旧链表的头部移除节点,添加到新链表的头部,与上一个方法的区别在于未提供节点外层的容器类,
public ListNode reverseList2(ListNode head) {List list1new List(head);List list2new List(null);while(true){ListNode firstlist1.removeFirst();if(firstnull)break;list2.addFirst(first);}return list2.head;}public class List{ListNode head;public List(ListNode head){this.headhead;}public void addFirst(ListNode first){first.nexthead;headfirst;}public ListNode removeFirst(){ListNode firsthead;if(first!null){headfirst.next;}return first;}}
第三种:
递归 public ListNode reverseList3(ListNode p) {if(pnull||p.nextnull)return p;ListNode lastreverseList3(p.next);//p.next为5p.next.nextp;//假设p为4,p.next为5,那么p.next.nextp就是5.next4p.nextnull;//4.nextnullreturn last;}
第四种:
从链表每次拿到第二个节点,将其从链表断开,插入头部,直到它为null结束 public ListNode reverseList4(ListNode o1) {//1.空链表,2.一个元素if(o1null||o1.nextnull)return o1;ListNode o2o1.next;ListNode n1o1;while(o2!null){o1.nexto2.next;//将其断开o2.nextn1;//插入头部n1o2;//n1指向头部o2o1.next;//o2指向下一个节点}return n1;}
第五种:
将链表分成两个部分,不断从链表2的头部往下插入链表1的头部,直到链表2为空结束
public ListNode reverseList(ListNode o1) {//1.空链表,2.一个元素if(o1null||o1.nextnull)return o1;ListNode n1null;while(o1!null){ListNode o2o1.next;o1.nextn1;n1o1;o1o2;}return n1;}
主函数: public static void main(String[] args) {ListNode o5new ListNode(5,null);ListNode o4new ListNode(4,o5);ListNode o3new ListNode(3,o4);ListNode o2new ListNode(2,o3);ListNode o1new ListNode(1,o2);System.out.println(o1);ListNode n1new Test().reverseList(o1);System.out.println(n1);}
ListNode类:
package reverseList;public class ListNode {//反转单向链表public int val;public ListNode next;public ListNode(int val, ListNode next){this.val val;this.next next;}public String toString(){StringBuilder sbnew StringBuilder();//创建一个 StringBuilder 对象用于构建字符串。sb.append([);ListNode pthis;//创建一个指向当前节点的指针用于遍历链表while(p!null){sb.append(p.val);if(p.next!null){sb.append(,);}pp.next;}sb.append(]);return sb.toString();//将 StringBuilder 对象转换为字符串并返回该字符串。}public ListNode reverseList(ListNode o1) {ListNode n1 null;ListNode p o1;while (p ! null) {n1 new ListNode(p.val, n1);p p.next;}return n1;}
}