206.反转链表
1.题目描述
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
2.解题报告
思路1:借助栈
利用栈先进后出的特点,将每个节点按顺序存入栈中,再从顶到底连接栈中的每个节点 注意要将翻转后的最后一个节点(即原链表的第一个节点)的next置为nullptr,不然后果可想而知~
思路2:就地操作(推荐)
逐个断开原链表的每个节点(保存下个节点) 将断开的节点连接到反转链表的表头上 更新反转链表的表头 回到原链表的下个节点
3.最优答案
c答案
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
//struct ListNode* reverseList(struct ListNode* head) {
// struct ListNode* new = NU