zoukankan      html  css  js  c++  java
  • 日常编程练习(六)

    反转链表

    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;
        }
    };
  • 相关阅读:
    基因组注释
    GapCloser
    Endnote参考文献格式修改
    多行变单行
    AD的基因组【转载】
    ROC曲线
    自我觉察-4:觉察“不浪费食物”和“胃过饱食”的信念
    自我觉察6-我的价值感?
    表观遗传、开放染色质测序、ATAC-seq、ChIP-seq简介
    ADNI(Alzheimer`s disease neuroimaging initiative)介绍
  • 原文地址:https://www.cnblogs.com/kiplove/p/7107707.html
Copyright © 2011-2022 走看看