当前位置: 首页 > 面试题库 >

如何反转单链表

孟思远
2023-03-14
本文向大家介绍如何反转单链表相关面试题,主要包含被问及如何反转单链表时的应答技巧和注意事项,需要的朋友参考一下

考察点:链表

ListNode
reverseList(ListNode* head) {
        if(head == nullptr || head->next ==nullptr)
            return head;
        ListNode* p;
        ListNode* q;
        ListNode* r;
        p = head;
        q = head->next;
        head->next = nullptr;//旧的头指针是新的尾指针 指向NULL
        while(q){
            r = q->next;//用来保存下一步要处理的指针
            q->next = p;//p q 交替处理 进行反转单链表
            p = q;
            q = r;
        }
        head = p;//最后的q必定指向NULL,p就成了新链表的头指针
        return head;
}

 

 

 类似资料:
  • 问题内容: 必须是O(n)并且是就地(空间复杂度为1)。下面的代码可以工作,但是有没有更简单或更完善的方法? 问题答案: 编辑以删除每次迭代的额外比较:

  • 我正在尝试反转一个链表,我为此编写了代码。但是,当我在反转后打印列表时,输出有点不完整。 产量:120 110 100

  • 我做了一个使用递归方法反转单链表的函数。然而,我在执行下面的代码时遇到了一些困难: 我应该如何在ReverseCursive函数/方法中传递第二个参数,以便执行它? 作为第二个参数,我想简单地传递链表的头节点。但是我不知道如何从类的init方法中获取头节点linked_list 我试了几件事,但都解决不了。也许我不太擅长OOP概念。有人能帮我解决这个问题吗?

  • 本文向大家介绍C语言实现单链表反转,包括了C语言实现单链表反转的使用技巧和注意事项,需要的朋友参考一下 一、理解指针 看懂链表的结构并不是很难,但是一旦把它和指针混在一起,就很容易让人摸不着头脑。所以,要想写对链表代码,首先就要理解好指针。   有些语言有“指针”的概念,比如 C 语言;有些语言没有指针,取而代之的是“引用”,比如 Java、Python。不管是“指针”还是“引用”,实际上,它们的

  • NowCoder 解题思路 递归 // java public ListNode ReverseList(ListNode head) { if (head == null || head.next == null) return head; ListNode next = head.next; head.next = null; ListNode

  • 我有下面的程序来反转单链表中的元素。我不能让它工作。我使用了简单的变量交换技术来交换节点,但当我打印时,它不会超出第一个节点。