设线性表A=(a1,a2……,am),B=(b1,b2……,bn),试写一个按下列规则合并A,B为线性表C的算法,即使得

C=(a1,b1,……am,bm,……bn) 当m<=n时;

C=(a1,b1,……an,bn,……am) 当m>n时;

C code:

#include<stdio.h>

#include<stdlib.h>
#define LIST_INIT_SIZE 10
#define LIST_INCREMENT 2
#define ERROR 0
#define OK 1
#define OVERFLOW -1
#define TRUE 1
typedef int Status;

struct SqList
{
     int *elem;
     int length;
     int listsize;
};

void InitList(SqList &L)
{
     L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
     if(!L.elem)
       exit(OVERFLOW);
     L.length=0;
     L.listsize=LIST_INIT_SIZE;
}

Status ListInsert(SqList &L,int i,int e)
{
     int *newbase,*q,*p;
     if(i<1||i>L.length+1)
       return ERROR;
     if(L.length==L.listsize)
     {
          newbase=(int*)realloc(L.elem,(L.listsize+LIST_INCREMENT)*sizeof(int));
          if(!newbase)
            exit(OVERFLOW);
          L.elem=newbase;
          L.listsize+=LIST_INCREMENT;
         
        }
        q=L.elem+i-1;
        for(p=L.elem+L.length-1; p>=q; --p)
          *(p+1)=*p;
        *q=e;
        ++L.length;
        return OK;
}

void CreateList(SqList &L,int len)
{
     int i;
     for(i=1; i<=len; i++)
     {
          ListInsert(L,i,rand()%100); 
        }
}

void CreateList_C(SqList La,SqList Lb,SqList &Lc)
{
     int i,j;
     if(Lc.listsize<=La.length+Lb.length)
     {
          Lc.listsize+=La.length+Lb.length;
        }
     for(i=0,j=1; j<=La.length+Lb.length && i<La.length && i<Lb.length; i++)
     {
          ListInsert(Lc,j,La.elem[i]);
          ListInsert(Lc,j+1,Lb.elem[i]);
          j+=2;
        }
        if(La.length<Lb.length)
        {
             for(; i<Lb.length; i++,j++)
             {
                  ListInsert(Lc,j,Lb.elem[i]);
                }
        }
        else
        {
             for(; i<La.length; i++,j++)
             {
                  ListInsert(Lc,j,La.elem[i]);
                }
        }
}

void ListTraverse(SqList L,void(*vist)(int&))
{
     int *p=L.elem;
     int i;
     for(i=1; i<=L.length; i++)
     {
          vist(*p++);
        }
        printf("\n");
}

void print1(int &c)
{
     printf("%d ",c);
}

int main()
{
     SqList La,Lb,Lc;
     InitList(La);
     InitList(Lb);
     InitList(Lc);
     int La_len,Lb_len;
     printf("input length of La: ");
     scanf("%d",&La_len);
     printf("input length of Lb: ");
     scanf("%d",&Lb_len);
     CreateList(La,La_len);
     CreateList(Lb,Lb_len);
     printf("List a: ");
     ListTraverse(La,print1);
     printf("List b: ");
     ListTraverse(Lb,print1);
     CreateList_C(La,Lb,Lc);
     printf("List c: ");
     ListTraverse(Lc,print1);
}

线性表--算法设计题2.23相关推荐

  1. 线性表--算法设计题2.29

    已知A,B和C为三个递增有序的线性表,现要求对A表作如下操作:删去那些既在B表中出现又在C表中出现的元素.试对顺序表编写实现上述操作的算法.(注意:题中没有特别指明同一表中的元素值各不相同). C c ...

  2. 线性表--算法设计题2.25

    假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素有依值递增有序排列.试对顺序表编写 ...

  3. 线性表应用之线性表算法设计六大经典案例

    目录: 1.顺序有序表的合并         重复式合并         不重复式合并 2.链式有序表的合并         重复式合并         不重复式合并 3.链式有序表的反序合并 4.两 ...

  4. 算法设计题3.16-栈和队列-第3章-《数据结构习题集》-严蔚敏吴伟民版

    习题集完整源码部分 第3章  栈和队列                                                                                 ...

  5. 算法设计题3.27-栈和队列-第3章-《数据结构习题集》-严蔚敏吴伟民版

    习题集完整源码部分 第3章  栈和队列                                                                                 ...

  6. c语言数据结构算法设计题,数据结构题集(C语言版)算法设计题答案[].doc

    数据结构题集(C语言版)算法设计题答案[].doc 第一章 绪论 1.16 void print_descending(int x,int y,int z)// 按从大到小顺序输出三个数 { scan ...

  7. 线性表算法题库_数据结构与算法(线性表)练习题

    .word 资料 . 三.写一个算法合并两个已排序的线性表. (用两种方法:数组表示的线性表(顺序表)和 指针表示的线性表(链表) ) 要求: 1 .定义线性表节点的结构,并定义节点的型和位置的型. ...

  8. pta数据结构-线性表(判断题和选择题)

    数据结构 判断题 选择题 ##这是博主小白做过的一些pta题,分 判断题和 选择题 判断题 1-1 对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N). 答案: ...

  9. 数据结构算法设计题 (超详细)

    整理日期:2022-12-08 目录 一.线性表 二.栈和队列 三.数组和广义表 四.树和二叉树 五.图 六.查找算法 七.排序算法 一.线性表 (1)将两个递增的有序链表合并为一个递增的有序链表.要 ...

最新文章

  1. 使用现场总线更快更远
  2. 这样规范写代码,同事直呼“666”
  3. 【OpenCV 4开发详解】轮廓面积与长度
  4. python自动测试u_自动化测试——Selenium+Python之下拉菜单的定位
  5. JAX-RS 2.0:服务器端处理管道
  6. MobaXterm 错行,乱码
  7. (14)css—伪类选择器
  8. 6_机器翻译与Seq2Seq模型
  9. java面试题jvm_经典面试题|讲一讲JVM的组成
  10. nodejs mysql数据推送_使用Nodejs实现实时推送MySQL数据库最新信息到客户端
  11. 获取context path或者basePath
  12. PuTTY 'modmul()' 函数缓冲区下溢漏洞(CVE-2013-4206)
  13. XMind 8 Update 7 激活
  14. 关于Linux中网络连接配置(NetworkManager)的一些笔记
  15. Geek Challenge
  16. python 简单操作dbpedia
  17. 计算机主机检测不到耳机,win10电脑检测不到耳机怎么办_win10电脑检测不到耳机如何解决-系统城...
  18. PortSwigger Academy | Authentication : 身份认证
  19. 简述java程序的工作过程_简述 Java 程序的开发过程。_学小易找答案
  20. Java -- 用文本文档写代码

热门文章

  1. appium python 抓包_Python学习教程:另辟蹊径,appium抓取app应用数据了解一下
  2. 什么不用 iframe 做微前端
  3. promise A+ 原理
  4. php写cms,浅谈thinkPHP,国内写CMS利用率最高的框架
  5. cvsaveimage 异常_C++ IplImage*的若干bug之三:cvSaveImage問題
  6. 解决 GiWiFi 普通用户无客户端无法登入
  7. CSS 总结我对3D效果的一些误解
  8. 韩顺平mysql优化笔记_韩顺平 mysql优化笔记.doc
  9. oppo手机android是多,OPPO手机卡屏?教你三招轻松解决卡顿问题,大部分安卓都适用...
  10. 运算放大器基本公式_跨阻放大器稳定性