数据结构基础:链式有序表的合并

本文介绍了如何将两个按值非递减有序排列的链式有序表LA和LB合并成一个新的链式有序表LC,详细阐述了算法思想和核心代码实现。在合并过程中,通过比较元素并插入较小元素来保持非递减顺序。
摘要由CSDN通过智能技术生成

链式有序表的合并

1.简单描述:

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

A=(3,5,8,11) B=(2,6,8,9,11)
C =(2,3,5,6,8,8,9,11,11)

2.算法思想

  • 1.从线性表LA中取出第一个数据元素;
  • 2.从线性表LB中取出第一个数据元素;
  • 3.将两个元素进行比较;
  • 4.将较小的元素插入到LC中;
  • 5.将第4步中小元素所在线性表指针下移,再取出一个元素,和刚 才较大的数据元素比较。
  • 6.重复4-5步直至LA和LB的指针均指向最尾端停止。

分析:算法主要包括线性表链式结构的三种操作:搜索、比较、插入
解释算法过程

3.代码实现

#include <iostream>
using namespace std;

typedef int ElemType;

//1.定义存储表示
typedef struct LNode
{
   
     ElemType   data;               //数据域
     struct LNode  *next;           //指针域
}LNode,*LinkList;

//2.初始化线性表La,Lb,Lc
void InitList_L (LinkList &La,LinkList &Lb,LinkList &Lc)
{
   
    La =new LNode;
    La ->next =NULL;

    Lb =new LNode;
    Lb ->next =NULL;

    Lc =new LNode;
    Lc ->next =NULL;
    cout<<"线性表初始化成功\n\n"<<endl;

}

//3.建立单链表
void CreateList_R(LinkList 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值