栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

74.交替插入链表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

74.交替插入链表

给定两组输入,建立两个逆序链表,之后将两个链表依次交替插入到一个新的链表中,如果两个链表不等厂,则将长的链表中剩余的部分直接插入到新链表中

例如:

输入:
12 13 14 15 16 17 0
22 23 24 25 0

输出:12 22 13 23 14 24 15 25 16 17

    void createList(PNODE h){  
        PNODE p;int num;PNODE q;   
        p=(PNODE)malloc(sizeof(NODE));                 
        p->next=NULL;  
        h->next=p;  
        scanf("%d",&num);  
        p->data=num;  
        while(1){  
            scanf("%d",&num);  
            if(num==0){  
                break;  
            }else{  
                q=(PNODE)malloc(sizeof(NODE));  
                q->next=NULL;p->next=q;q->data=num;  
                p=q;  
            }  
        }  
    }   
    void deployList(PNODE h1,PNODE h2,PNODE h3){  
        int i=1,a1=0,a2=0;PNODE p3;PNODE p;  
        p3=h3;  
        p=h1;  
        while(p->next!=NULL){p=p->next;a1++;}  
        p=h2;                              
        while(p->next!=NULL){p=p->next;a2++;}                           
        if(a1>=a2){  
            for(i=1;i<=2*a2;i++){  
                if(i%2 == 1){  
                    p3->next=h1->next;h1->next=(h1->next)->next;p3=p3->next;  
                }else{  
                    p3->next=h2->next;h2->next=(h2->next)->next;p3=p3->next;  
                }  
            }  
            p3->next=h1->next;  
        }else{  
            for(i=1;i<=2*a1;i++){  
                if(i%2 == 1){  
                    p3->next=h1->next;h1->next=(h1->next)->next;p3=p3->next;  
                }else{  
                    p3->next=h2->next;h2->next=(h2->next)->next;p3=p3->next;  
                }  
            }  
            p3->next=h2->next;  
        }  
    }  

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/698975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号