public class Demo1 {
Node head;
Node last;
int size;
// 构造链表
void buildList() {
head = new Node(1, null);
size++;
Node curentNode = head;
for (int i = 2; i < 10; i++) {
Node node = new Node(i, null);
curentNode.setNext(node);
curentNode = curentNode.next;
if (i == 9) {
last = node;
}
size++;
}
}
public static void main(String[] args) {
Demo1 demo1 = new Demo1();
demo1.reverseListNode();
demo1.reverseListNode02();
}
// 反转链表
public void reverseListNode() {
buildList();
if (head == null) {
return;
} else {
Node node = doReverseListNode(head);
last = node;
System.out.println(node);
}
}
// 反转链表2
public void reverseListNode02() {
buildList();
Node node = head;
Node prev = null;
while (node != null) {
Node next = node.next;
// 到最后一个元素了
node.next = prev;
prev = node;
node = next;
}
last = head;
head = prev;
}
private Node doReverseListNode(Node node) {
Node next = node.next;
if (next == null) {
head.next = null;
Node head = new Node(node.data, next);
this.head = head;
return head;
}
Node node1 = doReverseListNode(next);
node1.next = node;
return node;
}
private static class Node {
int data;
Node next;
public Node(int data, Node next) {
this.data = data;
this.next = next;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
}
反转链表
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 链表反转: 非递归版本中:while(p!=NULL)和while(p)时间上会有差别。 三个指针搞定,两个用来反...
- 删除链表的倒数第N个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:hea...
- 203. 移除链表元素[https://leetcode.cn/problems/remove-linked-li...
- 203.移除链表元素 题意:删除链表中等于给定值 val 的所有节点。示例 1:输入:head = [1,2,6,...
- 链表理论基础 数据结构视频里面看过讲解,代码看过逻辑,但是没有具体实现过。 链表包括:单链表(单方向)、双链表(向...