假设利用两个线性表La和Lb分别表示两个集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的 集合A=AUB。这就要求对线性表作如下操作:扩大线性表La,将存在于线性表Lb中而不存在于线

2023-11-02

/*假设利用两个线性表La和Lb分别表示两个集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的
集合A=AUB。这就要求对线性表作如下操作:扩大线性表La,将存在于线性表Lb中而不存在于线性表La中的数据元素插入
到线性表La中去,只要从线性表Lb中依次取得每个数据元素,并依值在线性表La中进行查访,若不存在,则插入之。*/
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define TRUE    1
#define FALSE   0
#define  OK     1
#define  ERROR  0
#define  INFEASIBLE  -1
#define  OVERFLOW    -2
#define LIST_INIT_SIZE  100//线性表存储空间的初始分量
#define LISTINCREAMENT  10//线性表存储空间的分配增量
typedef  int Status;
typedef int ElemType;


//=====================================================
//动态分配顺序存储结构
//=====================================================


typedef struct{
ElemType *elem;//存储空间基址
int     length;//当前长度
int  listsize;//当前分配的存储容量
}SqList;






//=========================================================
//等于函数
//=========================================================
Status equal(ElemType a,ElemType b)
{if(a==b)
return TRUE;
else 
return FALSE;
}


//=====================================================
//线性表长度的计算
//=====================================================
Status ListLength(SqList La)
{
return La.length;
}


//=========================================================
//打印函数
//=========================================================
void print(ElemType *c)
 {
   printf("%d ",*c);
 }


//=====================================================
//构造一个空的线性表L
//=====================================================
Status InitList_Sq(SqList *l)
{
(*l).elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!(*l).elem)
exit(OVERFLOW);
(*l).length=0;//线性表中元素的个数为length=0
(*l).listsize=LIST_INIT_SIZE;//线性表的大小为100个字节
return OK;
}


//=====================================================
//在顺序线性表L中第i个位置之前插入新的元素e
//=====================================================
Status ListInsert_Sq(SqList *l,int i,ElemType e)
{
ElemType *newbase,*q,*p;
if(i<1||i>(*l).length+1)
return ERROR;
if((*l).length>=(*l).listsize){
newbase=(ElemType*)realloc((*l).elem,((*l).listsize+LISTINCREAMENT)*sizeof(ElemType));
     if(!newbase)  exit(OVERFLOW);
(*l).elem=newbase;
(*l).listsize+=LISTINCREAMENT;//线性表增加listincrement长度
}
 q=&((*l).elem[i-1]);//指针q指向线性表的第i个元素
 for(p=&((*l).elem[(*l).length-1]);p>=q;--p)
*(p+1)=*p;
 *q=e;
 ++(*l).length;
 return OK;
}


//=====================================================
//查找第一个与e满足compare()的元素位序
//=====================================================
int LocateElem_Sq(SqList L,ElemType e,Status(*compare)(ElemType,ElemType))
{
//若找到则返回其在L中的为序,否则返回0
ElemType *p;
    int i=1;
p=L.elem;
while(i<=L.length&&!(*compare)(*p++,e))
i++;
if(i<=L.length)
return i;
else
return 0;
}




//=========================================================
//用e返回L中第i个数据元素的值
//=========================================================
Status getelem(SqList l,int i,ElemType *e)
{ if(i<1||i>l.length)
  exit(ERROR);
*e=*(l.elem+i-1);
return OK;
}


//=========================================================
//依次对L的每一个数据元素调用函数vi(),一旦vi()失败,则操作失败
//=========================================================
Status ListTraverse(SqList l,void(*vi)(ElemType *))
 {
   ElemType *p;
   int i;
   p=l.elem;
   for(i=1;i<=l.length;i++)
     vi(p++);
   printf("\n");
   return OK;
 }


//=====================================================
//将所有在Lb中而不再La中的数据元素插入到La中
//=====================================================
void Union(SqList *la,SqList lb)
{
int la_len,lb_len;
    int i;
ElemType e;
la_len=ListLength(*la);
lb_len=ListLength(lb);
for(i=1;i<=lb_len;i++)
{
getelem(lb,i,&e);
if(!LocateElem_Sq(*la,e,equal))
ListInsert_Sq(la,++la_len,e);


}
}

//=====================================================
//主函数
//=====================================================
void main()
{
SqList la,lb;
    int j,i;
i=InitList_Sq(&la);//构造一个空的线性表,如果构造成功,则返回ok
if(i==1)
for(j=1;j<=6;j++)
          i=ListInsert_Sq(&la,j,j);
printf("la= ");
      ListTraverse(la,print);
       InitList_Sq(&lb);
for(j=1;j<=6;j++)
        i=ListInsert_Sq(&lb,j,2*j);
printf("lb= ");
      ListTraverse(lb,print);
 Union(&la,lb);
   printf("la= ");
       ListTraverse(la,print);
}




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

假设利用两个线性表La和Lb分别表示两个集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的 集合A=AUB。这就要求对线性表作如下操作:扩大线性表La,将存在于线性表Lb中而不存在于线 的相关文章

  • 数据结构-顺序表的初始化

    顺序表的初始化 include
  • C语言创建顺序表并插入元素 详细注释

    顺序表是用一组地址连续的存储单元依次存储数据元素的数据结构 顺序表是线性表的一种 线性表是最常用且最简单的一种数据结构 一个线性表是 n 个数据元素的有限序列 我们使用 c 语言来创建顺序表并插入元素 IDE Code Blocks 17
  • 【数据结构】线性表的知识点全面总结

    目录 1 线性表的顺序表示 1 1顺序表的基本概念 1 2顺序表的基本操作 1 2 1插入 1 2 2删除 1 2 3查找 2 线性表的链式表示 2 1单链表 单链表的基本概念 2 1 1基本操作 2 1 1 1单链表的建立 2 1 1 2
  • 利用尾插法建立单链表

    PTA 5 3本题目要求利用尾插法建立单链表 输入格式 输入数据为若干正整数 最后以 1表示结尾 1不算在序列内 不要处理 所有数据之间用空格分隔 输入样例 1 2 3 4 5 6 7 8 9 1 输出样例 1 2 3 4 5 6 7 8
  • 假设利用两个线性表La和Lb分别表示两个集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的 集合A=AUB。这就要求对线性表作如下操作:扩大线性表La,将存在于线性表Lb中而不存在于线

    假设利用两个线性表La和Lb分别表示两个集合 和 即线性表中的数据元素即为集合中的成员 现要求一个新的 集合A AUB 这就要求对线性表作如下操作 扩大线性表La 将存在于线性表Lb中而不存在于线性表La中的数据元素插入 到线性表La中去
  • 数据结构知识整理

    基于严蔚敏及吴伟民编著的清华大学C语言版教材并结合网上相关资料整理 http www docin com p 2027739005 html 第一章 绪论 1 数据结构 是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系
  • 线性表的基本操作,包括:创建、插入、删除、查找等基本操作

    标签 数据结构 线性表是数据结构中最直观 最简单的一类抽象数据类型 本次需要使用顺序表来实现线性表 并编写相应的测试程序对你所创建的顺序表及单链表进行测试 以下给出测试样例 输入数据格式 第一行只有一个整型数N 0
  • 数据结构:线性表理论题目集

    大一下半期数据结构 数据结构 第2章 线性表 选择题 1 下述哪一条是顺序存储结构的优点 北方交通大学 2001 一 4 2分 A 存储密度大 B 插入运算方便 C 删除运算方便 D 可方便地用于各种逻辑结构的存储表示 2 下面关于线性表的
  • 数据结构-线性结构之线性表

    什么是线性表 线性表 Linear List 由同类型数据元素构成的有序序列的线性结构 1 表中元素个数称为线性表的长度 2 线性表没有元素时 称为空表 3 表起始位置称为表头 表的结束位置称为表尾 线性表的抽象数据类型描述 类型名称 线性
  • 数据结构:循环链表的使用

    循环链表 循环链表 将单链表中终端结点的指针端由空指针改为指向头结点 就使整个单链表形成一个环 这种头尾相接的单链表称为单循环链表 简称循环链表 如图所示 非空的循环链表如图 循环链表与单链表的主要差异在于循环的判断上 原来是判断p gt
  • 数据结构之线性表预习

    1 简述线性表中顺序存储结构的含义及主要元素 描述顺序存储结构需要三个属性 1 存储空间的起始位置 数组 data 它的存储位置就是存储空间的存储位置 2 线性表的最大存储容量 3 线性表的当前长度 数组长度 与 线性表长度区别 数组长度
  • 矩阵的转置

    稀疏矩阵 当一个矩阵中的很多元素都是零 而且非零元素的分布没有规律时 该矩阵称为稀疏矩阵 稀疏矩阵的压缩存储方法 从稀疏矩阵的概念 我们可以知道 稀疏矩阵的大多元素都是零 所以 我们只需要存储非零元素即可 这时 我们引入三元组表的概念 三元
  • C语言编程笔记丨数据结构-顺序线性表的实现(初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作)

    define MAXSIZE 100 结构体定义 typedef struct int elem 基地址 int length 结构体当前长度 int listsize 结构体最大长度 Sqlist 结构体类型名 各项操作 void Sho
  • 数据结构-线性表

    线性表 线性表是典型线性数据结构 线性表是由n n 0 个数据元素组成的一个有限序列 线性表中数据元素的个数n称为线性表的长度 当n 0时 称为空表 非空线性表满足线性结构的三个特性 线性表的数据元素可以是由一个数据项组成的简单数据元素 也
  • 考研数据结构--第二章:线性表

    系列索引 2023考研王道数据结构知识梳理 文章目录 1 线性表 1 1 线性表定义 1 2 线性表的特点 1 3 线性表的基本操作 2 顺序表 2 1 顺序表的定义 2 2 顺序表的实现 2 2 1 顺序表的静态分配 2 2 1 1 局限
  • ##顺序表 编码##

    ifndef LIST H define LIST H class List public List int size List 析构函数 void ClearList 清空线性表 bool ListEmpty 判断线性表是否为空 int
  • 线性表的查找算法-C语言

    文章目录 一 实验目的 二 实验内容 三 实验工具 四 实验代码 五 实验结果 六 总结与思考 一 实验目的 了解查找的基本概念 理解顺序查找 折半查找和分块查找的思想 掌握折半查找过程的判定树构造方法 实现线性表的查找算法 二 实验内容
  • 线性表技巧之Note001-链表的最后一个节点

    找到单链表的尾节点 通常我们遍历单链表的代码如下 list 指向单链表的头节点 因此 list gt next 指向链表的第一个节点 LNode node list gt next while node NULL node node gt
  • 数据结构-线性表之堆栈

    什么是栈 是一种数据结构 能够实现后进先出的一种业务场景 即栈中的元素被处理时 按后进先出的顺序进行 所以栈又叫做后进先出表 LIFO 例子 生活中的叠放在厨房桌子上的碗就是一种栈结构 放的时候只能把碗放在最上面 取的时候只能从最上面开始取
  • 【线性表】最常用的数据结构:线性表

    线性表 Linear List 是 最常用且 最简单的一种数据结构 有数据库知识的同学应该比较了解 线性表的定义 线性表是由n n 0 个 数据元素 结点 a 1 a 2 a n组成的有限序列 数据元素的个数n定义为表的长度 n 0时称为空

随机推荐

  • angular2下用http到由SpringMVC发布rest服务的服务器端拉取数据

    本文讲述如何使用angular2的http服务来去一台由SpringMVC发布的rest服务的服务器上拉取数据 我们现来上服务端代码 ResponseBody RequestMapping hero public Object getDat
  • linux服务器上前后端部署流程

    linux服务器上前后端部署流程 本文介绍如何在Linux上部署前段和后端的流程 以及遇见的bug Vue前端部署流程 首先 在服务器上 本文以华为云服务器为例 开启80端口 在服务器上下载nginx 更新apt源 sudo apt upd
  • Rust + Wasm 实现浏览器格式化 JSON

    本文代码 查看效果 依赖工具 cargo install wasm pack Cargo toml package name wasm bindgen record version 0 1 0 authors Li Lei
  • 如何解决段错误

    程序运行时崩溃应该是经常遇到的事情 本篇文中就来讲解一下在Linux下如何解决程序崩溃 也就是发生了段错误之后找到程序具体出错的地方 如果程序通过了编译 但是在使用命令 a out 运行时程序崩溃了 即显示 段错误 core dumped
  • Angular—目录

    开始Angular开发 Angular环境搭建 Angular开发准备 Angular页面搭建 Angular 路由 Angular 路由基础 Angular 路由数据传递 Angular 重定向路由 子路由 Angular 辅助路由 An
  • 蓝桥杯算法训练VIP-阶乘

    题目 题目链接 题解 思维 既然它要取最后一个非零位 那么我们第一时间想到的肯定是取模 只用保留后几位就行了 但是保留后几位呢 对10的多少次方取模合适呢 数据量是100 那么估算一下存在多少个零 能导致末尾零的出现无非就是乘以十的倍数或者
  • Java中的代码块

    1 什么是代码块 java代码中 直接写在 中的 没有方法名的方法称之为代码块 2 常见的代码块分类 1 静态代码块 2 构造代码块 3 局部代码块 4 同步代码块 3 静态代码块 1 特点 随着类的加载而执行 并且仅仅执行一次 优先于主函
  • win10下安装tensorflow-gpu1.13

    1 登录Anaconda官网 下载最新Python3 7版本 如图所示 对应的是windows 2 安装Anaconda时 记得选自动分配路径 就是在弹出的需要 的窗口 把两个选项都打勾 之后 打开Anaconda Navigator 点击
  • 使用String.split拆分多个空格的问题

    当用String split拆分字符串时 如果连着有两个或多个空格 那么得到的String数据就会包含一个空格 这样是不对的 使用如下方法可以解决 String split s 1
  • rsync基本命令,使用详细指导

    Rsync是一款强大的备份同步工具 这里对Rsync的基本命令和用法进行详细说明 Rsync基本命令 bash rsync 选项 lt 源 gt lt 目的地 gt 常用选项 v 详细输出 显示传输过程 r 递归处理 传输目录 a 归档模式
  • STM32H723+Lwip+ETH+CUBE 完整配置(排了巨多坑!)

    因为H723ZET6是ST目前最新的芯片 对于这个芯片的LWIP配置 官方库极其不友好 而且贼多BUG 踩了好久的坑 历经诸多苦难 终于能够正常PING通和进行TCP UDP通讯了 而且在国内基本上找不到H723ZET6的LWIP配置教程
  • 测试基础-动态黑盒测试

    1 动态黑盒测试 不深入代码细节测试软件的方法称为动态黑盒测试 动态 因为程序在运行 黑盒 测试时不知道程序如何工作 测试员输入数据 接受输出 检验结果 2 通过性测试和失效性测试 通过性测试 test to pass 确认软件至少能做什么
  • 50个渗透(黑客)常用名词及解释

    目录 前言 一 渗透测试 二 网络安全 三 安全攻击 四 黑客工具 五 渗透方法 六 网络钓鱼 七 攻击技术 八 其他名词 总结 前言 网络安全是当今互联网时代不可忽视的重要议题 随着科技的发展 黑客渗透技术也日益复杂和潜在危险 为了加强对
  • 首次参加字节飞书面试败北

    我17年正式本科毕业的 2021年是我自毕业后开始尝试投简历 以前大学有门课在智联上制作了简历 现在四年 我下载app上面就没了 我今年这次注册了boss直聘的这个 正好在315后面隔天注册的 发现挺多主动发起招呼的 我把猎头屏蔽了 个人有
  • swift4--页面跳转的几种方法

    首先要在appDelegate里添加导航视图控制器navigationColler func application application UIApplication didFinishLaunchingWithOptions launc
  • 《数据结构、算法与应用C++语言描述》线性表-链表描述

    11 数据结构 算法与应用C 语言描述 线性表 链表描述 11表示第11篇博文 6表示在 数据结构算法与应用C 语言描述 书中所在章节 本文包含了 数据结构 算法与应用C 语言描述 第六章主要练习题答案 给出了线性表链表描述完整测试代码 6
  • HTML中多种空格转义字符

    转自 http codenote mao li html nbsp 记录一下 空格的转义字符分为如下几种 1 nbsp 160 不断行的空白 1个字符宽度 2 ensp 8194 半个空白 1个字符宽度 3 emsp 8195 一个空白 2
  • Kubernetes安装手册(Ubuntu非高可用版-CNI-flannel)

    CKA考试环境 Kubernetes 安装手册 Ubuntu非高可用版 安装前准备工作 1 设置hosts解析 操作节点 所有节点 k8s master 均需执行 修改hostname hostname必须只能包含小写字母 数字 且开头结尾
  • keras中Sequential模型及方法

    Sequencial 序贯模型 序贯模型是函数式模型的简略版 为最简单的线性 从头到尾的结构顺序 不分叉 是多个网络层的线性堆叠 可以通过将层的列表传递给Sequential的构造函数 来创建一个Sequential模型 from kera
  • 假设利用两个线性表La和Lb分别表示两个集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的 集合A=AUB。这就要求对线性表作如下操作:扩大线性表La,将存在于线性表Lb中而不存在于线

    假设利用两个线性表La和Lb分别表示两个集合 和 即线性表中的数据元素即为集合中的成员 现要求一个新的 集合A AUB 这就要求对线性表作如下操作 扩大线性表La 将存在于线性表Lb中而不存在于线性表La中的数据元素插入 到线性表La中去