[链表]-反转单向和双向链表
2017-12-15 11:23
260 查看
4000
题目:
分别实现反转单向链表和反转双向链表的函数
要求:
如果链表长度为N,时间的复杂度要求为O(N),额外空间的复杂度O(1)
示例代码:
//反转单向链表
public class Node{
public int value;
public Node next;
public Node(int data){
this.value = data;
}
}
public Node reverseList(Node head){
Node pre = null;
Node next = null;
while(head != null){
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
// 反转双向链表
public class DoubleNode{
public int value;
public DoubleNode last;
public DoubleNode next;
public DoubleNode(int data){
this.value = data;
}
}
public DoubleNode reverseList(DoubleNode head){
DoubleNode pre = null;
DoubleNode next = null;
while(head != null){
next = head.next;
head.next = pre;
head.last = next;
pre = head;
head = next;
}
return pre;
}
题目:
分别实现反转单向链表和反转双向链表的函数
要求:
如果链表长度为N,时间的复杂度要求为O(N),额外空间的复杂度O(1)
示例代码:
//反转单向链表
public class Node{
public int value;
public Node next;
public Node(int data){
this.value = data;
}
}
public Node reverseList(Node head){
Node pre = null;
Node next = null;
while(head != null){
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
// 反转双向链表
public class DoubleNode{
public int value;
public DoubleNode last;
public DoubleNode next;
public DoubleNode(int data){
this.value = data;
}
}
public DoubleNode reverseList(DoubleNode head){
DoubleNode pre = null;
DoubleNode next = null;
while(head != null){
next = head.next;
head.next = pre;
head.last = next;
pre = head;
head = next;
}
return pre;
}
相关文章推荐
- 链表问题——反转单向链表和双向链表
- 反转链表 单向和双向链表 附代码
- 链表问题---反转单向和双向链表
- 反转单向链表和反转双向链表
- 左程云_算法与数据结构 — 链表问题 — 04反转单向和双向链表
- 反转单向和双向链表简化
- 数据结构 反转单向链表和双向链表
- [算法]反转单向链表和双向链表
- 单向链表遍历反转 Javascript实现
- 单向链表反转
- 单向链表反转
- Java模拟单向链表和双向链表的实现
- 反转单向链表
- 单向链表反转
- 单向链表的反转
- 单向链表反转
- 二维指针可以减少双向或单向链表的初始判断。
- Leetcode Reverse Linked List II 反转部分单向链表
- 反转单向链表
- 反转单向链表