请用java中栈实现以下功能,每一行代码都需要详细注解。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表
时间: 2023-03-14 09:05:37 浏览: 81
/**
* 反转链表
*
* @param {Node} head 链表的头节点
* @return {Node} 反转后的链表的头节点
*/
public Node reverseList(Node head) {
Stack<Node> stack = new Stack<>();
while (head != null) {
// 将节点压入栈中
stack.push(head);
// 移动到下一个节点
head = head.next;
}
// 新建一个头节点,用于反转链表
Node newHead = null;
// 循环出栈,反转链表
while (!stack.isEmpty()) {
// 弹出栈顶节点
Node node = stack.pop();
// 将节点next指针指向新的头节点,实现反转
node.next = newHead;
// 将新的头节点指向当前节点
newHead = node;
}
// 返回反转后的链表
return newHead;
}
相关问题
请用java 栈实现以下功能,每一行代码都需要详细注解。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表
// 初始化一个新的链表
ListNode newHead = null; // 用一个指针遍历原链表
ListNode pNode = head; // 遍历原链表,每遍历一个节点,将其放到新链表的最前端
while(pNode!=null){
ListNode temp = pNode; // 临时存储当前节点
pNode = pNode.next; // 指针向后移动
temp.next = newHead; // 将当前节点放到新链表的最前端
newHead = temp;
} // 返回反转后的链表
return newHead;
请用java中栈实现以下功能,每一行代码都需要详细注解,代码要格式化。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表
// Java代码,实现链表反转
public Node reverseLinkedList(Node head){
// 定义一个节点指向头结点
Node pre = null;
// 将当前节点指向头结点
Node curr = head;
// 循环反转链表
while (curr != null){
// 将当前节点的下一个节点暂存到一个新变量next中
Node next = curr.next;
// 将当前节点指向前一个节点
curr.next = pre;
// 将前一个节点指向当前节点
pre = curr;
// 将当前节点指向暂存的下一个节点
curr = next;
}
// 将反转后的链表头结点返回
return pre;
}
阅读全文