zoukankan      html  css  js  c++  java
  • LeetCode-206 Reverse Linked List

    题目描述如下

    Reverse a singly linked list.

    Example:

    Input: 1->2->3->4->5->NULL
    Output: 5->4->3->2->1->NULL
    Follow up:

    A linked list can be reversed either iteratively or recursively. Could you implement both?

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-linked-list

    逆转链表,其实就是先进后出,所以可以用栈实现。当然简单的头插法也可以,这里就不写了。

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* reverseList(ListNode* head) {
            stack<ListNode *> nodeStack;
            if(head==NULL)
                return NULL;
            ListNode * pNode=head;
            while(pNode!= NULL)
            {
                nodeStack.push(pNode);
                pNode=pNode->next;
            }
            ListNode * newHead=NULL;
            newHead=nodeStack.top();
            nodeStack.pop();
            ListNode * pre=newHead;
            while(!nodeStack.empty())
            {
                ListNode * p=nodeStack.top();
                nodeStack.pop();
                pre->next=p;
                pre=p;
            }
            pre->next=NULL;
            return newHead;
        }
    };
    

    递归本质也是一个栈结构,所以也可以用递归实现,这里记录一下:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* reverseList(ListNode* head) {
            ListNode * newHead=NULL;
            if(head ==NULL)  //链表是空的就返回空
                return NULL;
            ListNode * nextNode = head->next;
            ListNode * res=reverseList(nextNode);
            if(nextNode ==NULL)
                return head;
            nextNode->next = head;
            head->next=NULL;
            
            return res;
        }
    };
    
  • 相关阅读:
    XML相关资源
    【翻译】Windows下文件的命名
    显示文件的16进制编码(C++)
    函数模板的匹配
    最新的flex4.1和as3.0的帮助文档
    Flash/Flex 框架简介—PureMVC
    textfield的诡异
    灵异的bug
    互联网公司的发展都在于专注和坚持。
    python内置数据类型
  • 原文地址:https://www.cnblogs.com/HaoPengZhang/p/11537736.html
Copyright © 2011-2022 走看看