• 日常编程练习(六)


    反转链表

    1、新建链表,头解法

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
                val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        ListNode* ReverseList(ListNode* pHead) {
            ListNode* node=pHead;
            ListNode* res=NULL;
            while(node!=NULL)
                {
                ListNode* temp=new ListNode(node->val);
                temp->next=res;
                res=temp;
                node=node->next;
            }
            return res;
        }
    }; 

    2、在原链表直接反转链表,需要记录每一个链表元素反转的后一个元素,否则会断链。

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
                val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        ListNode* ReverseList(ListNode* pHead) {
            ListNode* pre=NULL;
            ListNode* node=pHead;
            ListNode* after=NULL;
            while(node!=NULL)
            {
                after=node->next;
            node->next=pre;
                pre=node;
                node=after;
            }
            return pre;
        }
    };

    合并两个排序链表,合并后链表还是有序的(升序)

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
                val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
        {
            if(!pHead1||!pHead2)
                return ((pHead1==NULL)?pHead2:pHead1);
            ListNode* node1=pHead1;
            ListNode* node2=pHead2;
            ListNode* newnode=NULL;
            ListNode* iter=NULL;    
            while((node1!=NULL)&&(node2!=NULL))
            {
                if(node1->val<=node2->val)
                {
                    if(newnode==NULL)
                    {
                        newnode=node1;
                        iter=node1;
                        node1=node1->next;
                    }
                    else 
                    {
                        iter->next=node1;
                        iter=iter->next;
                        node1=node1->next;
                    }
                }
                else
                {
                    if(newnode==NULL)
                    {
                        newnode=node2;
                        iter=node2;
                        node2=node2->next;
                    }
                    else 
                    {
                        iter->next=node2;
                        iter=iter->next;
                        node2=node2->next;
                    }
                }
            }
            if(node1)
                iter->next=node1;
            else
                iter->next=node2;
            return newnode;
        }
    };
  • 相关阅读:
    Frameworks.Entity.Core 5 EntityValidation
    Frameworks.Entity.Core 4
    大叔 Frameworks.Entity.Core 3 Predicate
    大叔 Frameworks.Entity.Core 2 PageList
    Frameworks.Entity.Core 1
    大叔 EF 来分析 EntityFrameworks.Data.Core 2
    大叔 EF 来分析 EntityFrameworks.Data.Core 1
    基于 Lind.DDD 的 权限管理系统
    HttpApplication IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable ps url System.Web.dll
    MVC 记录
  • 原文地址:https://www.cnblogs.com/kiplove/p/7107707.html
Copyright © 2020-2023  润新知