合并LA,LB两个线性表到线性表LC中:
LinearList.h
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 20
typedef struct
{
int elem[MaxSize];
int length;
}SqList;
void initList(SqList* &L)
{
L = (SqList *)malloc(sizeof(SqList));
L->length = 0;
}
void Destory(SqList* &L)
{
free(L);
}
int ListEmpty(SqList *L)
{
return (L->length==0);
}
int ListLength(SqList *L)
{
return L->length;
}
void DispList(SqList *L)
{
int i=0;
if(ListEmpty(L)) return;
for(;i<L->length;i++)
{
printf("%d ",L->elem[i]);
}
printf("\n");
}
int GetElem(SqList *L, int i, int &e)
{
if(i<1 && i>L->length) return 0;
e = L->elem[i-1];
return 1;
}
int LocateElem(SqList *L, int e) //是为了寻找第一个值域与e相等的元素的次序,所以要加1
{
int i = 0;
while(i<L->length && L->elem[i]!= e)
i++;
if(i>= L->length)
return 0;
else
return i+1;
}
int inserList(SqList* &L,int i, int e)
{
int j;
if(i<1 && i>L->length +1)
return 0;
i--; //将顺序表位序转换为elem下标
for (j=L->length;j>i;j--)
{
L->elem[j] = L->elem[j-1];
}
L->elem[i] = e;
L->length++;
return 1;
}
Union.cpp
#include <stdio.h>
#include "LinearList.h"
void Union(SqList *LA, SqList *LB, SqList *&LC)
{
int lena,lenb;
int e;
initList(LC);
for(int i=1;i<=ListLength(LA);i++)
{
GetElem(LA,i,e);
//printf("e = %d\n",e);
inserList(LC,i,e);
}
lena = ListLength(LA);
lenb = ListLength(LB);
printf("lena = %d lenb = %d\n",lena,lenb);
for(int j=1;j<=lenb;j++)
{
GetElem(LB,j,e);
// printf("e = %d\n",e);
// printf("LocateElem = %d\n",LocateElem(LA,e));
if(!LocateElem(LA,e))
inserList(LC,++lena,e);
}
}
int main(void)
{
SqList *LA,*LB,*LC;
initList(LA);
initList(LB);
printf("please input the length of LA : \n");
scanf("%d",&LA->length);
printf("please input the LA set : \n");
for(int i=0;i<LA->length;i++)
scanf("%d",&LA->elem[i]);
printf("please input the length of LB : \n");
scanf("%d",&LB->length);
printf("please input the LB set : \n");
for(int j=0;j<LB->length;j++)
scanf("%d",&LB->elem[j]);
Union(LA,LB,LC);
printf("LC length = %d\n",ListLength(LC));
DispList(LC);
return 0;
}
分享到:
相关推荐
两个有序顺序表合并为有序顺序表 C++实现 顺序表 C++ C 数据结构 顺序表的排序
### 两个有序顺序表合并成一个顺序表,还是有序的 在计算机科学中,处理数据结构和算法时,经常会遇到需要合并多个已排序数组的问题。本文将深入探讨如何有效地将两个已排序的顺序表合并为一个新的有序顺序表,并...
1.建立两个顺序表(通过随机函数生成); 2.排序(升序),输出合并前的结果; 3.对这两个顺序表进行合并(保持升序); 4.输出合并结果
有关于基于C++的数据结构两个顺序表合并为有序表类的实现。
有序表合并的基本目标是将两个已经按照递增顺序排列的顺序表合并成一个新的递增有序表。这个过程需要设计合适的算法,以确保合并后的表依然保持升序。 在实验中,主要涉及以下知识点: 1. **数据结构**:实验使用...
顺序表合并 c++ cpp 数据结构 作业 顺序表合并 c++ cpp 数据结构 作业
编写算法,将两个非递减顺序表L1和L2合并到顺序表L中,使得合并后的顺序表L仍然保持非递减特性,删除重复元素,包含 输入:有人性化输入界面 读入:程序要求可以读入两个非递减顺序表,并判断是否是非递减以及是否有...
本文将深入解析一个基于C++实现的顺序表合并程序,从代码分析到理论概念,全方位解读合并顺序表的核心原理及其在实际编程中的应用。 #### 一、顺序表简介 顺序表是一种基本的线性表存储结构,其中的元素在内存中是...
两个不同长度的线性表的合并,在合并过程中,两个线性表中共有的元素会自动删掉,合并后的线性表没有排序,如需排序,请看我之前发的线性表之顺序表实验
数据结构实验两个有序顺序表的合并.doc
例如,当需要合并多个文件数据时,可以先将每个文件的内容读入顺序表,然后将所有顺序表合并为一个,以得到完整的数据集。 总结来说,“链表的合并”和“顺序表”是数据结构中的基本操作。对于顺序表的合并,由于...
合并操作是指将两个顺序表合并成一个顺序表。在C语言中,可以使用合并函数MergeList_Sq来实现合并操作。合并函数需要指定两个要合并的顺序表,并检查合并的合法性。 6. 定位 定位操作是指在顺序表中查找一个元素。...
cout 两个顺序表合并后的结果" ; ListA.SLPrint(); cout ; } ``` **解释**: - `ListUnion` 函数实现了两个顺序表的合并。 - 首先打印出两个输入顺序表的内容。 - 然后遍历第二个顺序表(`ListB`),对于`ListB...
当我们有两个已经有序的顺序表(数组)时,合并它们成一个新的有序顺序表是一项基本操作。这个过程通常被称为“合并排序”。这里我们将详细探讨如何使用C++来实现这个算法。 首先,我们需要理解什么是顺序表。顺序...
C语言数据结构实现顺序表的动态申请内存并且合并,代码可以直接使用。
本案例探讨了如何使用Java编程语言将两个已排序的顺序表合并为一个新表,保持原有的升序排序。 案例描述了两个已排序的顺序表listA和listB,每个表都包含一些整数。目标是创建一个新的有序顺序表listC,将这两个表...
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。L1和L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1和L2合并为一个非递减的整数序列。应直接使用原...
本实验“数据结构实验-顺序表的合并”旨在通过面向对象编程的方法,实现两个已排序的顺序表的合并,确保合并后的新顺序表仍然保持有序状态。下面将详细阐述相关知识点。 1. **顺序表的概念**: 顺序表是数组的一个...