ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

已知LA、LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按非递减排列

2020-03-25 22:01:06  阅读:604  来源: 互联网

标签:LB LC LA int ElemType OVER elem length SqList


#include <stdio.h>
#include <stdlib.h>
#define MAX 10
#define ADD 10
#define OVER -2
#define ERROR -1
#define OK 1
typedef int ElemType;
typedef struct SqList{
    ElemType *elem;
    int length;
    int listsize;
}SqList;
//初始化
int InitList(SqList &L)
{
    L.elem = (ElemType *)malloc(MAX * sizeof(ElemType));
    if(!L.elem)
    {
        printf("申请空间失败\n"); 
        exit(OVER);
    } 
    L.length = 0;
    L.listsize = MAX;
    return OK;
 } 
 //插入
 int  InsertList(SqList &L,int i,ElemType e)
 {
     if(i < 1 || i > L.length + 1)
     {
         printf("超出范围\n");
         exit(OVER);
     }
     if(L.length >= L.listsize)
     {
         ElemType * newbase = (ElemType *)realloc(L.elem,(L.listsize + ADD) * sizeof(ElemType));
         if(!newbase)
         {
             printf("空间不足\n");
             exit(OVER);
         }
         L.elem = newbase;
         L.listsize += ADD;
         
     }
     ElemType *q,*p;
     q = &L.elem[i - 1];
     for(p = &L.elem[L.length - 1];p >= q;p --)
     {
         *(p + 1) = *p;
         
     }
     *q = e;
    
     L.length ++;
     return OK;
 }
 //查询
 int GetElem(SqList L,int i,ElemType &e)
 {
     if(i < 1 || i > L.length)
     {
         printf("查无结果\n");
         exit(OVER);
     }
     e = L.elem[i - 1];
     return OK;
  } 
  //递增排序
  int MergeList(SqList La,SqList Lb,SqList &Lc)
  {
      int i = 1,j = 1;
      int k = 0;
      ElemType e1,e2;
      
      while(i <= La.length && j <= Lb.length)
      {
          GetElem(La,i,e1);
          GetElem(Lb,j,e2);
          if(e1 <= e2)
          {
              InsertList(Lc,++k,e1);
              ++i;
              
        }
        else
        {
            InsertList(Lc,++k,e2);
            ++j;
        }
      }
      while(i <= La.length)
      {
          GetElem(La,i ++,e1);
          InsertList(Lc,++k,e1);
      }
      while(j <= Lb.length)
      {
          GetElem(Lb,j ++,e2);
          InsertList(Lc,++k,e2);
      }
      return OK;
   } 
int main()
{
    SqList La,Lb,Lc;
    ElemType e;
    int i = 1;
    int j;
    if(InitList(La) == i && InitList(Lb) == i && InitList(Lc) == i)
    {
        printf("初始化成功\n");
        printf("请为La赋3个递增值:");
        for(i = 1;i <= 3;i ++)
        {
            scanf("%d",&e);
            InsertList(La,i,e);
        }
        printf("请为La赋4个递增值:");
        for(i = 1;i <= 4;i ++)
        {
            scanf("%d",&e);
            InsertList(Lb,i,e);
        }
        if(MergeList(La,Lb,Lc) == 1)
        {
            printf("操作成功\n");
        
        
        
            for(j = 1;j <= La.length + Lb.length;j ++)
            {
                GetElem(Lc,j,e);
                printf("%d ",e);
            }
         }
    }
}

 

标签:LB,LC,LA,int,ElemType,OVER,elem,length,SqList
来源: https://www.cnblogs.com/xiaobaiyuan/p/12570869.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有