zoukankan      html  css  js  c++  java
  • 静态数组线性表 将两个集合插入另一个集合并排序

    #include<stdio.h>
    #include<stdlib.h>
    #define LIST_INIT_SIZE 100//链表的最大长度
    #define LISTINREMENT 12//链表现有的长度

    typedef struct sqlist  {
      int *A;
      int length;//链表当前长度
      int listsize;//链表最大长度

    };

    //初始化链表

    int InitList(sqlist &L){
         
       L.length = 0;  //长度初始化为0

          L.listsize= LIST_INIT_SIZE;

       L.A=(int*)malloc(LIST_INIT_SIZE*sizeof(int));//给链表分配最大的一内存块
       return 1;
    }


    /*被插入的链表为全局的 j为插入的位数 e是需要插入的元素 */
    void ListInsert(sqlist &L,int j,int e){
     int j;
           for(j = L.length - 1 ;j > 0 ;j--)
         L.A[j+1] = L.A[j];
           L.A[j] = e;
        L.length++;//插入一个当前链表的长度加1

    }


    //计算链表长度
    int ListLength(sqlist L){
       return L.length;
    }

    //从链表L中获取 第i个元素的值
    void GetElem(sqlist L,int i,int &e){

     e = L.A[i];

    }

    //将 链表La Lb 按照从小到大的顺序 一次插入到链表Lc中去

    void MergeList(sqlist La,sqlist Lb,sqlist &Lc){
       int i, j ,k,La_len,Lb_len;
       InitList(Lc);
       i = j = 0;
       k = 0;
       La_len = ListLength(La);
       Lb_len = ListLength(Lb);
     

       while((i <= La_len-1) && (j <= Lb_len-1)){
           GetElem (La, i, La.A[i]);
        GetElem(Lb, j, Lb.A[j]);
        if (La.A[i] <= Lb.A[j] )
        {
         ListInsert (Lc, k, La.A[i]);
         k++;
         ++i;
       // printf("%d ",k);
        }
        else
        {
         ListInsert(Lc,k,Lb.A[j]);
         k++;
         ++j;
         //printf("%d ",k);
        }
       }
       //printf("%d ",i);
      // printf("%d ",j);
       while (i <= La_len-1){
          GetElem(La,i,La.A[i]);
      // printf("%d ",La.A[i]);
       //i++;
         
          //printf("%d ",k);
       ListInsert(Lc,k,La.A[i]);
          k++;
       //printf("%d ",Lc.A[11]);
      // printf("%d ",k);
       i++;
       }

     while (j <= Lb_len-1)
     {
          GetElem(Lb,j,Lb.A[j]);
       j++;
       ListInsert(Lc,k,Lb.A[j]);
       k++;
       //printf("test");  
    }
    //printf("%d",Lc.A[10]);
    }


    int main()
    {
     int i;
     sqlist La;
     sqlist Lb;
     sqlist Lc;
    InitList( La);
    InitList( Lb);

    La.A[0]=3;
    La.A[1]=5;
    La.A[2]=8;
    La.A[3]=21;
    La.length=4;

    Lb.A[0]=2;
    Lb.A[1]=6;
    Lb.A[2]=8;
    Lb.A[3]=9;
    Lb.A[4]=11;
    Lb.A[5]=15;
    Lb.A[6]=20;
    Lb.length=7;

     MergeList(La, Lb, Lc);
     //printf("%d ",Lc.length);
     
     for(i = 0; i <Lc.length; i++)  
       printf("%d ",Lc.A[i]);
     return 0;
    }

    每个人的强大都是从弱小开始慢慢积累起来的!!
  • 相关阅读:
    Python安装appium 遇见的报错
    appium
    QQ邮箱/微信邮箱发送邮件
    Python-变量
    神秘的咒语
    宿命的PSS
    E. Congruence Equation
    D. Substring
    leetcode 761. Special Binary String
    F
  • 原文地址:https://www.cnblogs.com/gaoanchen/p/3250549.html
Copyright © 2011-2022 走看看