zoukankan      html  css  js  c++  java
  • 算法设计分析(44页)

    分别以两个(带头结点的)循环有序链表表示集合A和B,完成这两个集合并集的操作:

    代码如下:

    #include<stdio.h>
    typedef struct LNode    {
        int data ;
        struct LNode *next ;
    }LNode , *LinkList ;
    
    void union_OL(LinkList &La , LinkList &Lb )  {
        LinkList pa = La->next->next ;
        LinkList pb = Lb->next->next ;
        LinkList rc = La->next ;
        while(pa != La->next && pb !=Lb->next)  {
            if((pa->data) < (pb->data)) {
                rc->next = pa ;
                rc = pa ;
                pa = pa->next ;
            }
            else if((pa->data) > (pb->data))    {
                rc->next = pb ;
                rc = pb ;
                pb = pb->next ;
            }
            else    {
                rc->next = pa ;
                rc = pa ;
                pa = pa->next ;
                pb = pb->next ;
            }
        }
    
        if(pb==(Lb->next))
            rc->next = pa ;
        else{
            Lb->next = La->next ;
            La->next = pb ;
            La = Lb ;
        }
        //printf("%d
    ",La->next->next->data) ;
        LinkList hrc = La->next->next ;
        while(hrc != La->next)  {
            printf("%d ",hrc->data) ;
            hrc =hrc->next ;
        }
        printf("
    ") ;
    }
    
    int main()  {
        LinkList La , Lb ;
        int a[] = {4,7,10,21,40,56} ;
        int b[] = {7,9,21,68} ;
        int i ;
        LinkList ha = new LNode ;
        La = ha ;
        for(i = 0 ; i < 6 ; i++)    {
            LinkList s = new LNode ;
            s->data = a[i] ;
            La->next = s ;
            La = s ;
        }
        La->next = ha ;
        LinkList hb = new LNode ;
        Lb = hb ;
        for(i = 0 ; i < 4 ; i++)   {
            LinkList s = new LNode ;
            s->data = b[i] ;
            Lb->next = s ;
            Lb = s ;
        }
        Lb->next = hb ;
        /*LinkList hrc = Lb->next->next ;
        printf("%d
    ",hrc->data) ;
        while(hrc != Lb->next)  {
            printf("%d ",hrc->data) ;
            hrc = hrc->next ;
        }*/
       //inkList rc = La->next ;
       union_OL(La,Lb) ;
        return 0 ;
    }
  • 相关阅读:
    素数筛选法
    一种美-无法言语
    动态规划-钢条切割问题
    动态规划《开篇》
    判断两序列是否为同一棵二叉搜索树
    C++字符串转化为数字的库函数
    C++字符串类型和数字之间的转换
    遍历二叉树的非递归实现
    关于二叉树的问题1-已知前序,中序求后序遍历
    获取回车事件
  • 原文地址:https://www.cnblogs.com/scottding/p/3841365.html
Copyright © 2011-2022 走看看