数据结构例程——合并有序表

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 本文针对数据结构基础系列网络课程(2):线性表中第15课时有序表。问题:有两个有序表LA和LB,将它们合并成一个有序表LC。要求不破坏原有表LA和LB 算法思想: 解法1:用顺序表实现(支持的算法库,及list.h文件,请点击链接…)#include "list.h"void UnionList(SqList *LA,SqList *LB,SqList *&a

本文针对数据结构基础系列网络课程(2):线性表中第15课时有序表

问题:有两个有序表LA和LB,将它们合并成一个有序表LC。要求不破坏原有表LA和LB
算法思想:
这里写图片描述

解法1:用顺序表实现(支持的算法库,及list.h文件,请点击链接…)

#include "list.h"
void UnionList(SqList *LA,SqList *LB,SqList *&LC)
{
    int i=0,j=0,k=0;    //i、j、k分别作为LALBLC的下标
    LC=(SqList *)malloc(sizeof(SqList));
    LC->length=0;
    while (i<LA->length && j<LB->length)
    {
        if (LA->data[i]<LB->data[j])
        {
            LC->data[k]=LA->data[i];
            i++;
            k++;
        }
        else                //LA->data[i]>LB->data[j]
        {
            LC->data[k]=LB->data[j];
            j++;
            k++;
        }
    }
    while (i<LA->length)    //LA尚未扫描完,将其余元素插入LC中
    {
        LC->data[k]=LA->data[i];
        i++;
        k++;
    }
    while (j<LB->length)  //LB尚未扫描完,将其余元素插入LC中
    {
        LC->data[k]=LB->data[j];
        j++;
        k++;
    }
    LC->length=k;
}
int main()
{
    SqList *L1,*L2,*L3;
    ElemType a[]= {1,3,5};
    ElemType b[]= {2,4,8,10};
    CreateList(L1,a,3);
    printf("L1:");
    DispList(L1);
    CreateList(L2,b,4);
    printf("L2:");
    DispList(L2);
    printf("归并\n");
    UnionList(L1,L2,L3);
    printf("L3:");
    DispList(L3);
    DestroyList(L1);
    DestroyList(L2);
    DestroyList(L3);
}

解法2:用单链表实现(支持的算法库,及linklist.h文件,请点击链接…)

#include <stdio.h>
#include <malloc.h>
#include "linklist.h"
void UnionList1(LinkList *LA,LinkList *LB,LinkList *&LC)
{
    LinkList *pa=LA->next,*pb=LB->next,*pc,*s;
    LC=(LinkList *)malloc(sizeof(LinkList));        //创建LC的头结点
    pc=LC;                          //pc始终指向LC的最后一个结点
    while (pa!=NULL && pb!=NULL)
    {
        if (pa->data<pb->data)
        {
            s=(LinkList *)malloc(sizeof(LinkList));//复制*pa结点
            s->data=pa->data;
            pc->next=s;pc=s;        //采用尾插法将*s插入到LC的最后
            pa=pa->next;
        }
        else
        {
            s=(LinkList *)malloc(sizeof(LinkList));//复制*pb结点
            s->data=pb->data;
            pc->next=s;pc=s;        //采用尾插法将*s插入到LC的最后
            pb=pb->next;
        }
    }
    while (pa!=NULL)
    {
        s=(LinkList *)malloc(sizeof(LinkList)); //复制*pa结点
        s->data=pa->data;
        pc->next=s;pc=s;        //采用尾插法将*s插入到LC的最后
        pa=pa->next;
    }
    while (pb!=NULL)
    {
        s=(LinkList *)malloc(sizeof(LinkList)); //复制*pa结点
        s->data=pb->data;
        pc->next=s;pc=s;        //采用尾插法将*s插入到LC的最后
        pb=pb->next;
    }
    pc->next=NULL;
}
int main()
{
    LinkList *L1,*L2,*L3;
    ElemType a[]={1,3,5};
    ElemType b[]={2,4,8,10};
    CreateListR(L1,a,3);
    printf("L1:");DispList(L1);
    CreateListR(L2,b,4);
    printf("L2:");DispList(L2);
    printf("归并\n");
    UnionList1(L1,L2,L3);
    printf("L3:");DispList(L3);
    DestroyList(L1);
    DestroyList(L2);
    DestroyList(L3);
    return 0;
}
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
6月前
|
算法
数据结构与算法-(11)---有序表(OrderedList)
数据结构与算法-(11)---有序表(OrderedList)
51 1
|
1月前
|
设计模式 算法 Java
【数据结构和算法】交替合并字符串
给你两个字符串word1和word2。请你从word1开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回合并后的字符串。
70 1
|
6月前
数据结构单链表之合并两个已排序的链表 | 第十套
数据结构单链表之合并两个已排序的链表 | 第十套
34 0
|
8月前
|
C++
剑指offer(C++)-JZ25:合并两个排序的链表(数据结构-链表)
剑指offer(C++)-JZ25:合并两个排序的链表(数据结构-链表)
|
存储 C语言
【数据结构】链表OJ第一篇 —— 移除链表元素 && 反转链表 && 合并两个有序链表
【数据结构】链表OJ第一篇 —— 移除链表元素 && 反转链表 && 合并两个有序链表
106 0
【数据结构】链表OJ第一篇 —— 移除链表元素 && 反转链表 && 合并两个有序链表
算法与数据结构全阶班-左程云版(二)基础阶段之2.链表、栈、队列、递归行为、哈希表和有序表(下)
本文主要介绍了一些常用的数据结构,包括链表、栈、队列、递归、哈希表和有序表。
算法与数据结构全阶班-左程云版(二)基础阶段之2.链表、栈、队列、递归行为、哈希表和有序表(下)
|
算法 Java API
算法与数据结构全阶班-左程云版(二)基础阶段之2.链表、栈、队列、递归行为、哈希表和有序表(上)
本文主要介绍了一些常用的数据结构,包括链表、栈、队列、递归、哈希表和有序表。
算法与数据结构全阶班-左程云版(二)基础阶段之2.链表、栈、队列、递归行为、哈希表和有序表(上)
|
JavaScript 前端开发 C++
数据结构:哈希表与有序表
数据结构:哈希表与有序表
147 0
|
SQL 算法 数据挖掘
Smaller And Smarter Python数据结构:合并两个有序链表
Smaller And Smarter Python数据结构:合并两个有序链表
102 0