顺序表合并

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 顺序表合并
/*.已知有两个按元素值递增有序的顺序表A和B,设计一个算法将表A和表B的全部元素归并为一个按元素值非递减有序的顺序表C。
要求:
从键盘输入顺序表A和B的各元素,编程实现上述算法,输出顺序表A、顺序表B和顺序表C 的所有元素值 。*/
//群:970353786
#include<stdio.h>
#include <stdlib.h>
#include<iomanip>
#include<iostream>
#pragma warning(disable:4996)
typedef int ElemType;
#define MAXSIZE 100
typedef struct shun
{
  ElemType data[MAXSIZE];
  int len;
}SqList;
void Mergelist_sq(SqList La, SqList Lb, SqList& Lc)//合并算法
{
  int i = 0, j = 0, k = 0;
  while (i < La.len && j < Lb.len)//当两个表都为扫描完的时候
  {
    if (La.data[i] < Lb.data[j])//如果表A的数据比表B的数据小
    {
      Lc.data[k] = La.data[i];  //把小的那个丢到C里面
      i++;//表A的位置也要+1,挪到下一个位置
      k++;//移动过去了,长度肯定+1
    }
    else if (La.data[i] > Lb.data[j])//同理
    {
      Lc.data[k] = Lb.data[j];
      j++;
      k++;
    }
    else//等于情况咯,两个都可以移动过去
    {
      Lc.data[k] = La.data[i]; i++; k++;
      Lc.data[k] = Lb.data[j]; j++; k++;
    }
  }//三次排序
  while (i < La.len)//如果前面几次的移动还没移动完A,剩下的再插到C中
  {
    Lc.data[k] = La.data[i]; i++; k++;//为什么i,k加一?同上
  }
  while (j < Lb.len)//同理
  {
    Lc.data[k] = Lb.data[j]; j++; k++;
  }
  Lc.len = k;// C顺序表合并后的实际长度
}
int main()//编写主函数,传入数据
{
  SqList sqa, sqb, sqc;//定义结构体变量
  int a, b;
  printf("请输入顺序表A的元素个数:");
  scanf_s("%d", &a);
  printf("请输入顺序表A的数据:");
  for (int i = 0; i < a; i++)//依次输入A数据
  {
    scanf_s("%d", &sqa.data[i]);
  }
  sqa.len = a;//A顺序表的长度
  printf("A顺序表的长度为:%d\n", sqa.len);
  printf("请输入顺序表B的元素个数:");
  scanf_s("%d", &b);
  printf("请输入顺序表B的数据:");
  for (int j = 0; j < b; j++)//依次输入B数据
  {
    scanf_s("%d", &sqb.data[j]);
  }
  sqb.len = b;//B顺序表的长度
  printf("B顺序表的长度为:%d", sqb.len);
  printf("\n");
  Mergelist_sq(sqa, sqb, sqc);//A,B的数据有了,调用函数把这两个表合并到空顺序表C中,C是空!!
  printf("A顺序表的元素为:");
  for (int i = 0; i < sqa.len; i++)
  {
    printf("%2d", sqa.data[i]);
  }
  printf("\n");
  printf("B顺序表的元素为:");
  for (int j = 0; j < sqb.len; j++)
  {
    printf("%2d", sqb.data[j]);
  }
  printf("\n");
  printf("C顺序表的元素为:");
  for (int n = 0; n < sqc.len; n++)
  {
    printf("%2d", sqc.data[n]);
  }
}
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
文字识别 容器
文字识别OCR常见问题之本地部署如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
431 3
【每日教程】用中继器做一个三级菜单(含标签)
【每日教程】用中继器做一个三级菜单(含标签)
|
存储 应用服务中间件 调度
在StatefulSet中使用LocalVolume存储卷保持节点一致
StatefulSet是一种有状态服务,其存储卷的使用有多种方式: 使用共享存储,这时在模板中定义一个volume卷,可以给多个pod共享; 每个pod配置独立的存储卷,使用非共享存储(块存储)时需要这样配置,通过配置volumeClaimTemplates实现; 对于StatefulSet使...
5068 0
|
9月前
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
426 9
第六届计算机工程与应用国际学术会议 (ICCEA 2025) 2025 6th International Conference on Computer Engineering and Application
第六届计算机工程与应用国际学术会议 (ICCEA 2025) 2025 6th International Conference on Computer Engineering and Application
289 5
|
存储 SQL 数据库连接
【QT速成】半小时入门QT6之QT前置知识扫盲(二)
【QT速成】半小时入门QT6之QT前置知识扫盲(二)
415 13
|
Python
Python中几种lambda排序方法
【9月更文挑战第7天】在Python中,`lambda`表达式常用于配合排序函数,实现灵活的数据排序。对于基本列表,可以直接使用`sorted()`进行升序或降序排序;处理复杂对象如字典列表时,通过`lambda`指定键值进行排序;同样地,`lambda`也适用于根据元组的不同位置元素来进行排序。
674 1
|
存储 IDE TensorFlow
安装Anaconda
【7月更文挑战第2天】安装Anaconda。
374 1
|
监控 搜索推荐 Go
万字详解!在 Go 语言中操作 ElasticSearch
本文档通过示例代码详细介绍了如何在Go应用中使用`olivere/elastic`库,涵盖了从连接到Elasticsearch、管理索引到执行复杂查询的整个流程。
415 0
Qt表格中的自定义编辑组件---------------自定义代理QStyledItemDelegate
Qt表格中的自定义编辑组件---------------自定义代理QStyledItemDelegate
255 5