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;
        }
    }

  • 相关阅读:
    elementui中el-alert实现换行的方法
    Element-UI中el-table实现简单动态数据绑定的实现
    腾讯课堂多倍速、去除xxx正在观看
    Linux vim 常用操作
    尚硅谷《谷粒商城项目总结》
    Centos 安装 Harbor
    centos 7 安装 kubernetes
    Mac VirtualBox 没有 Host-Only 选项怎么设置?
    VirtualBox 安装 centos7
    ssh 使用 sed 替换的时候,替换的字符串有单双引号的时候怎么用
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5752135.html
Copyright © 2011-2022 走看看