力扣每日一刷
广度优先搜索 / 深度优先搜索
题目一
- 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
解题思路
思路一:迭代
迭代需要三个指针,pre,cur,nxt,分别按顺序指向三个节点
三个指针的初始化:pre指向空节点,cur指向头结点head,nxt指向head.next
因为head.next可能不存在,nxt在循环中定义,这样如果head为空就不会进入循环
迭代过程
nxt指向cur.next
cur.next指向pre
pre移动到cur位置
cur移动到nxt位置
当cur为空时,返回pre
思路二:利用栈先进后出的原理,将每个结点的值放入栈,之后再出栈赋值即可。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class