Titan笔记

  • 首页
  • Java
  • 数据结构
  • Web
  • C语言
  • Python
  • 杂谈
  • 逸笔挥墨
Titan笔记
分享学习、研究与开发过程中的点滴记忆
  1. 首页
  2. C语言
  3. 正文

[数据结构] 两个有序线性表的合并

2020年3月7日 554点热度 4人点赞 1条评论
Question

【问题描述】

编制一个能演示将两个有序表合并为一个有序表的程序。

【基本要求】

已知递增有序线性表LA和LB,现将LA和LB合并到LC,LC也是递增有序的。

【测试数据】

LA=(3,5,8,11)  LB=(2,6,8,9,11,15,20)

合并后的LC=(2,3,5,6,8,9,11,15,20)

#include<stdio.h>
#include<stdlib.h>
//构建线性表结构 
typedef struct LNode *List;
struct LNode{
  int data[1000];
  int last;
};

//生成线性表 
List createList(int arr[],int arrLen){
  List L= (List)malloc(sizeof(struct LNode));
  L->last=0;
  for(int i=0;i<=arrLen;i++){
    L->data[L->last]=arr[i];
    L->last++;
  }
  return L;
}
//合并两个线性表 
List mergeList(List L1,List L2){
  List L = (List)malloc(sizeof(struct LNode));
  L->last=0;
  int j=0,k=0;
  while(j<L1->last && k<L2->last){
    if(L1->data[j]==L2->data[k]){
      L->data[L->last]=L1->data[j];
      j++;
      k++;
    }else if(L1->data[j]<L2->data[k]){
      L->data[L->last]=L1->data[j];
      j++;
    }else{
      L->data[L->last]=L2->data[k];
      k++;
    }
    L->last++;
  }
  while(j<L1->last){
    L->data[L->last]=L1->data[j];
    j++;
    L->last++;
  }
  while(k<L2->last){
    L->data[L->last]=L2->data[k];
    k++;
    L->last++;
  }
  return L;
}

int main(void){
  int a[100],b[100];
  char temp;
  int countA=0,countB=0;
  printf("请输入第一个递增有序线性表:  ");
  while(scanf("%d%c",&a[countA],&temp),temp!='\n'){
    countA++;
  }
  printf("请输入第二个递增有序线性表:  ");
  while(scanf("%d%c",&b[countB],&temp),temp!='\n'){
    countB++;
  }
  List L1=createList(a,countA);
  List L2=createList(b,countB);
  List L = mergeList(L1,L2);
  printf("合并后的线性表为: %d",L->data[0]);
  for(int i=1;i<L->last;i++){
    printf(" %d",L->data[i]);
  }
  
}

 

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: 数据结构 线性表 链式存储 链表
最后更新:2020年3月15日

Titan

兴趣广泛而无一精擅
想到什么,我总是渴望以代码的方式去呈现
永远年轻,永远热泪盈眶
Stay Hungry, Stay Foolish

点赞
< 上一篇
下一篇 >

文章评论

  • Yeton

    666

    2020年3月7日
    回复
  • 取消回复

    Titan

    兴趣广泛而无一精擅
    想到什么,我总是渴望以代码的方式去呈现
    永远年轻,永远热泪盈眶
    Stay Hungry, Stay Foolish

    逸笔挥墨 - Titan的文学天地
    文章分类
    • C语言 (4)
    • Hadoop (1)
    • Hive (3)
    • Java (18)
    • JavaWeb (3)
    • Linux运维之道 (1)
    • Mybatis学习笔记 (3)
    • Python (3)
    • SpringCloud (3)
    • Web (5)
    • Web前端 (4)
    • Web后端 (5)
    • 数据库 (1)
    • 数据结构 (10)
    • 杂谈 (3)
    • 诗词歌赋 (1)
    • 随摘 (2)
    最新 热点 随机
    最新 热点 随机
    Spring Cloud 微服务学习笔记 - Eureka 服务注册与发现 Spring Cloud 微服务学习笔记 - IDEA工程搭建 关于我和Titan笔记 Spring Cloud 微服务学习笔记 - 开篇 TitanEMS - Titan企业员工管理系统 - JavaWeb期末实践项目 Linux 网络优化指南 - 改善Linux的网络性能
    Spring Cloud 微服务学习笔记 - 开篇TitanEMS - Titan企业员工管理系统 - JavaWeb期末实践项目2021年1月随摘2021年1月诗摘关于我和Titan笔记《梦之浮桥》中的几句
    [算法] 数组排序 - 冒泡排序法与直接选择排序法 [PHP框架] ThinkPHP6 介绍、安装及配置 Java核心技术之动态代理 Spring Cloud 微服务学习笔记 - 开篇 Hadoop安装与环境配置入门 Spring Cloud 微服务学习笔记 - IDEA工程搭建
    标签聚合
    Python JavaWeb Mybatis学习笔记 二叉树 Apache-Hive 数据结构 链式存储 Java
    友情链接
    • Mttblog

    COPYRIGHT © 2016 - 2021 Titan笔记. ALL RIGHTS RESERVED.

    THEME KRATOS MADE BY VTROIS

    豫ICP备20001822号-1

    豫公网安备 41010502004418号