• leecode第二百零六题(反转链表)


    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* recursive(ListNode* head) {
            ListNode* pre_node;
            if(head->next!=NULL)
            {
                pre_node=recursive(head->next);
                ListNode* cur_pre_node=pre_node;//找到新的节点后,对末尾加入当前节点
                while(cur_pre_node->next!=NULL)
                    cur_pre_node=cur_pre_node->next;
                cur_pre_node->next=head;
                head->next=NULL;//别忘了末尾补NULL
            }
            else
                pre_node=head;//如果是尾节点,就定义为新的头结点
            
            return pre_node;
            
        }
        
        ListNode* iteration(ListNode* head)
        {
            ListNode* node=new ListNode(head->val);
            head=head->next;
            
            while(head!=NULL)
            {
                ListNode* cur_node=new ListNode(head->val);//每次开辟新空间
                cur_node->next=node;//指向node
                node=cur_node;//node后移
                head=head->next;
            }
            return node;   
        }
        
        ListNode* reverseList(ListNode* head) {
            if(head==NULL)
                return NULL;
            //return recursive(head);//方法一 递归
            return iteration(head);//方法一 迭代
        }
    };

     分析:

    嗯,如程序所示。

  • 相关阅读:
    Java学习之路(四)
    HTML学习之canves元素
    一些常用的SQL查询语句
    数据库实现动态表头
    Java学习之路(三)
    Java学习之路(二)
    Java学习之路(一)
    UML类图几种关系的总结(转)
    vue 项目全局修改element-ui的样式
    NGINX 资料
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10721579.html
Copyright © 2020-2023  润新知