数据结构实践——顺序表:两集合的交集

【项目 - 求集合并集】

  假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。设计算法,用函数unionList(List LA, List LB, List &LC )函数实现该算法,求一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中。

提示:

(1)除了实现unnionList函数外,还需要在main函数中设计代码,调用unionList进行测试和演示;

(2)可以充分利用前面建好的算法库[点击…],在程序头部直接加 #include<list.h>即可(工程中最普遍的方法,建议采纳);

(3)也可以将实现算法中需要的线性表的基本运算对应的函数,与自己设计的所有程序放在同一个文件中。

[参考解答]

#include "list.h"
#include <stdio.h>

void unionList(SqList *LA, SqList *LB, SqList *&LC)
{
    int lena,i;
    ElemType e;
    InitList(LC);
    for (i=1; i<=ListLength(LA); i++) //将LA的所有元素插入到Lc中
    {
        GetElem(LA,i,e);
        ListInsert(LC,i,e);
    }
    lena=ListLength(LA);         //求线性表LA的长度
    for (i=1; i<=ListLength(LB); i++)
    {
        GetElem(LB,i,e);         //取LB中第i个数据元素赋给e
        if (!LocateElem(LA,e)) //LA中不存在和e相同者,插入到LC中
            ListInsert(LC,++lena,e);
    }
}

//用main写测试代码
int main()
{
    SqList *sq_a, *sq_b, *sq_c;
    ElemType a[6]= {5,8,7,2,4,9};
    CreateList(sq_a, a, 6);
    printf("LA: ");
    DispList(sq_a);

    ElemType b[6]= {2,3,8,6,0};
    CreateList(sq_b, b, 5);
    printf("LB: ");
    DispList(sq_b);
    unionList(sq_a, sq_b, sq_c);
    printf("LC: ");
    DispList(sq_c);
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-20 17:13:29

数据结构实践——顺序表:两集合的交集的相关文章

数据结构实践——顺序表应用

[项目 - 顺序表应用] 定义一个采用顺序结构存储的线性表,设计算法完成下面的工作: 1.删除元素在[x, y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1): 2.将所在奇数移到所有偶数的前面,要求算法的时间复杂度为O(n),空间复杂度为O(1). 提示: (1)充分利用前面建立的算法库解决建立顺序表.输出线性表的问题: (2)为保证复杂度的要求,设计算法并用专门的函数实现算法: (3)每项工作写一个程序,并发布博文,展示你的实践成果. [参考解答] (注:项目中所需要的

数据结构。顺序表

#include <stdio.h>#include <stdlib.h> #define LIST_INIT_SIZE 100#define LIST_INCREMENT 10typedef struct Point   //element type{    int x;    int y;}Point;typedef Point ElemType;typedef struct          //list type{    ElemType *elem;     //data

Windows 已在 数据结构_顺序表.exe 中触发一个断点——new和delete注意事项

实现数据结构的顺序表的类时,输入,改,删,查都可以,但是最后析构函数时持续出错 错误提示"Windows 已在 数据结构_顺序表.exe 中触发一个断点" int *elem=new int(LIST_INIT_SIZE); if(!elem)cout<<"overflow"<<endl; if(leng>LIST_INIT_SIZE) cout<<"error"; else {    length=le

数据结构之顺序表

好不容易linux的课程结束了,下面就进入了数据结构的课程,对于没学过这本书的我,只能弱弱的说一句,数据结构真的好难,在学习的过程中,觉得最经典的一句话便是,数据结构+算法=程序.我只想说理解数据结构真的好难,太富有逻辑性了,有时候真的还需要发挥自己的空间想象能力,几天的学习,其实还算可以吧,下面我就给大家写一点线性表的基本操作吧,我尽可能的讲解的清楚一些,方便看的人有兴趣能有自己实现. #include <stdio.h> #include <stdlib.h> #include

C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动态数组)STL vector进行分析和总结. 引言 因为前段时间对台大的机器学习基石和技法课程进行了学习,发如今详细的实现中经常涉及到各种类型的数据结构,比方线性表.二叉树.图等,在使用这些数据结构时感到有些吃力.主要是对一些主要的数据结构理解的不够.所以趁着暑假假期.近期一段时间总会抽出时间复习一

【数据结构】顺序表和链表

一.顺序表 顺序表定义 :顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素.使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表.顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中. 顺序表可以分为静态顺序表和动态顺序表,静态较为简单,本文提供全部动态顺序表基本操作的代码. 顺序表的基本操作:

数据结构学习---顺序表

在准备考研的时候就想发学习笔记,想来已经过了多时.现在在培训班又要展开学习,说明一件事:408是指导学习研究计算机的基础!对于编写程序而言,数据结构与算法,是关键!我想其他的组成原理,计算机网络,操作系统也很重要,这是一个system,有必要有需要学习认真的学习之.希望这个是好的开始! ---------------------------------------------------------------- 昨天晚上看浙大在网易云课上的视频,没有上过浙大的我还是非常激动,哈哈,三个短视频看

计蒜客课程数据结构(顺序表)

1.线性表是由相同数据类型的 n 个数据元素a0,a1,......,an-1 组成的有限序列.一个数据元素可以由若干个数据项组成.若用 L 命名线性表,则其一般表示如下: L=(a0,a1,......,an-1) 其中, a0?? 是唯一的“第一个”数据元素,又称为表头元素:an-1?? 是唯一的“最后一个”数据元素,又称为表尾元素. 线性表按照存储结构,可以分为顺序表和链表两种类型. 2.顺序表是在计算机内存中以数组形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构.

数据结构之顺序表的合并

写一个程序完成以下功能: (1)  一条记录有学号和成绩两个数据项,依次输入数据(学号,成绩): (5,60),(6,80),(7,76),(8,50),建立一个顺序表,并写一个插入函数,把以上数据写到主函数中依次调用插入函数.要求:先输入的数据排在前面,不要按学号或成绩从大到小排序. (2)  依次输出表中所有数据. (3)  写一个函数对表中所有数据按照成绩从大到小进行排序. (4)  再次输出所有数据. (5)  建立另外一个顺序表,依次输入数据:(10,70),(20,85),(30,7