题目是给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。请使用栈的java语言编写代码,每行代码都有注释。并用图解
时间: 2023-03-13 17:42:18 浏览: 102
我的代码:/* 创建一个新的空链表 */
ListNode reversedList = null;/* 创建一个栈,用来存储原链表的节点 */
Stack<ListNode> stack = new Stack<ListNode>();/* 把原链表的所有节点依次放入栈中 */
ListNode temp = head;
while (temp != null) {
stack.push(temp);
temp = temp.next;
}/* 从栈中取出节点,依次放入新的链表中 */
while (!stack.isEmpty()) {
ListNode node = stack.pop();
// 如果新链表中没有任何节点,则此节点为新链表的头节点
if (reversedList == null) {
reversedList = node;
}
// 否则,把此节点放到新链表的末尾
else {
node.next = reversedList;
reversedList = node;
}
}/* 返回结果 */
return reversedList;
相关问题
题目是给你单链表的头节点 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;
}
阅读全文