题目是给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。请使用栈的java语言编写代码,每行代码都有注释。并用图解来详细分析
时间: 2023-03-14 18:50:44 浏览: 104
// 使用栈的java语言编写的反转链表代码// 初始化栈
Stack<ListNode> stack = new Stack<>();// 遍历链表,把所有节点放入到栈中
ListNode currentNode = head;
while (currentNode != null) {
stack.push(currentNode);
currentNode = currentNode.next;
}// 从栈中取出节点,并依次连接节点
ListNode reversedHead = stack.pop();
ListNode p = reversedHead;
while (!stack.isEmpty()) {
ListNode temp = stack.pop();
p.next = temp;
p = temp;
}// 将最后一个节点的next设置为null
p.next = null;// 返回反转后的链表头节点
return reversedHead;
相关问题
题目是给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。请使用栈的java语言编写代码
public ListNode reverseListByStack(ListNode head) {
Stack<ListNode> stack = new Stack<>();
ListNode cur = head;
while (cur != null) {
stack.push(cur);
cur = cur.next;
}
ListNode newHead = stack.pop();
cur = newHead;
while (!stack.isEmpty()) {
cur.next = stack.pop();
cur = cur.next;
}
cur.next = null;
return newHead;
}
题目是给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。请使用栈的java语言编写代码,并注明详细代码注释
// 使用栈来反转链表:
// Java 代码如下:
public ListNode reverseList(ListNode head) {
Stack<ListNode> stack = new Stack<>();
// 将 head 节点及其之后的节点全部入栈
ListNode currentNode = head;
while (currentNode != null) {
stack.push(currentNode);
currentNode = currentNode.next;
}
// 从栈中取出节点,并依次将其 next 指向前一个节点,
// 当取出 head 节点时,将其 next 设置为 null,完成链表反转
ListNode reverseHead = stack.pop();
ListNode tempNode = reverseHead;
while (!stack.isEmpty()) {
currentNode = stack.pop();
tempNode.next = currentNode;
tempNode = currentNode;
}
tempNode.next = null;
return reverseHead;
}
阅读全文