zoukankan      html  css  js  c++  java
  • 链表的合并与取中间值

    1.链表合并


    int main()
    {
        node *phead1 = NULL;//头结点不分配内存
        phead1 = addback(phead1, 2);    //addback是在尾部添加节点,也就是将2插入怕head1链表的尾部。
        phead1 = addback(phead1, 4);
        phead1 = addback(phead1, 6);
        phead1 = addback(phead1, 8);
        phead1 = addback(phead1, 10);
        phead1 = addback(phead1, 12);
        phead1 = addback(phead1, 14);
        node *phead2 = NULL;//头结点不分配内存
        phead2 = addback(phead2, 1);
        phead2 = addback(phead2, 3);
        phead2 = addback(phead2, 5);
        phead2 = addback(phead2, 7);
        phead2 = addback(phead2, 9);

        node *phead = NULL;//123456
        node *p1 = phead1;
        node *p2 = phead2;
        //1  3  5 7  9  
        //2  4  6  8 10
        
        while (p2!=NULL ||p1!=NULL)
        {
            if (p1!=NULL && p2!=NULL) //对比两个数据
            {
                if (p1->data < p2->data)
                {
                    phead = addback(phead, p1->data);
                    p1 = p1->pNext;
                }
                else
                {
                    phead = addback(phead, p2->data);
                    p2 = p2->pNext;
                }
            }
            else
            {
                while (p1!=NULL)//尾部添加
                {
                    phead = addback(phead, p1->data);
                    p1 = p1->pNext;
                }

                while (p2 != NULL)//尾部添加
                {
                    phead = addback(phead, p2->data);
                    p2 = p2->pNext;
                }
            }            
        }
        
        system("pause");
    }

    2.链表取中间值

    node *  getmid(node *phead)
    {
        if (phead==NULL ||phead->pNext==NULL)
        {
            return phead;
        }
        else
        {
            node *p1=phead;
            node *p2=phead;

            while (p2->pNext!=NULL)//  //0->data
            {
                p1 = p1->pNext;//前进一步
                p2 = p2->pNext;//2步

                if (p2->pNext!=NULL)//提前结束
                {
                    p2 = p2->pNext;
                }

            }
            return p1;
        }
    }

  • 相关阅读:
    LR学习笔记6-常用术语
    LR学习笔记5-LR界面分析3
    LR学习笔记4-LR界面分析2
    LR学习笔记3-LR界面分析1
    Maven快速导出maven工程的依赖包
    Python3 将txt数据转换成列表,进行排序,筛选
    iOS OC环信实时语音切换听筒免提听不到声音报错:AVAudioSessionErrorCodeBadParam
    iOS voip电话和sip软电话 --网络电话
    远程(离线)推送自定义推送声音,友盟、极光
    Swift3.0 自定义tableView复用cell 的写法,与CollectionViewCell的不同,数据model
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5752135.html
Copyright © 2011-2022 走看看