实验描述:La表中的数据为(3,5,8,11)  Lb 表中的数据为(2,6,8,9,11,15,20) 将La表中的数据而不存在Lb表的数据插入到Lb表中,从而实现并集操作。

出现的问题:最后实现的线性表的末端始终有个0 我认为是display返回的状态代码 不知道怎么删除  求大神指教。

#include <iostream>
//包含文件
using namespace std;#define LIST_INIT_SIZE 100
//初始化分配量#define LISTINCREMENT 10
//存储空间的分配增量typedef int status;
//存储结构的类型定义 返回函数的状态结果代码
typedef int ElemType;
//数据元素/結点的表示 这个是用户自定义的数据类型 用于结点
typedef struct{ElemType *elem;//结点的储存空间首地址int length;//当前长度int listsize;//当前的分配的存储容量 (以sizeof (ElemType)为单位)
}IntNode; //相当于在java中定义了一个叫IntNode的结点类status IntList(IntNode &L)
{//这个函数实现的是构建一个空线性表 在这之前我们要为其分配100个ElemType大小的L.elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));//分配100个ElemType大小的存储空间,并把地址分配给指向ElemType的指针elemif(!L.elem)exit(0);//如果没有分配成功 那么存储失败L.length = 0;//长度为0L.listsize = LIST_INIT_SIZE;//初始容量是100return true;}status InsertList(IntNode &L,int n)
{cout<<"请输入数据"<<endl;for(int i =0;i<n;i++){cin>>L.elem[i];++L.length;if(L.length>=L.listsize){ElemType * newbase;newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)exit(0);L.elem= newbase;L.length+=LISTINCREMENT;//这段代码的意思是 当线性表的长度小于最大分配的空间时 //你就要重新分配出110的分配空间 并将指针赋给newbase}}return L.length;}status ListLength(IntNode &L)
{int answer;for(int i =0;i<L.length;i++){answer++;}return L.length;
}status  ListInsert(IntNode &L,int i,ElemType e)
{//在i的位置之前插入e元素 并使L的长度增加
//有了前置条件 i必须是不超出线性表范围的    1<=i<=L.length+1if(i>L.length||i<0)return false;if(L.length>=L.listsize){ElemType * newbase;newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)exit(0);L.elem= newbase;L.length+=LISTINCREMENT;//这段代码的意思是 当线性表的长度小于最大分配的空间时 //你就要重新分配出110的分配空间 并将指针赋给newbase}ElemType *p =&(L.elem[i-1]);//指定的位置for(ElemType *q = &(L.elem[L.length-1]);q>=p;--q){*(q+1)=*(q);//插入位置及之后的元素右移}*p =e;++L.length;return 1;}status GetElem(IntNode &L,int i) {ElemType *p =  & (L.elem[i-1]);ElemType e = *p;return e;}status LocateElem(IntNode &L,ElemType e)
{ElemType *p =&(L.elem[0]);//首位置for(ElemType *q = &(L.elem[L.length-1]);p<=q;p++){if(e==*p)return true;}return false;
}status display(IntNode &L,int n){for ( int i = 0; i <=n ; i ++){cout << L.elem[i]<< "  ";}return 0;}int main(){IntNode La;IntNode Lb;IntList(Lb);IntList(La);InsertList(La,4);InsertList(Lb,7);for(int i=1 ;i <=4;i++) {ElemType e = GetElem(La,i);if(!LocateElem(Lb,e)){ListInsert(Lb,++Lb.length,e);--Lb.length;cout<<endl;}}cout<<display(Lb,8);cout<<endl;return 0;}

转载于:https://www.cnblogs.com/suncoolcat/p/3315356.html

数据结构中La表的数据合并到Lb表中相关推荐

  1. oracle横向合并两张表,SQL中将两个表合并成一个新表 SQL如何合并两个表并生成一个新表?...

    sql把两个表合并成一个新表的语句应该怎么写SQL SERVER: select * into 表3 from ( select 字段列表1 from 表1 union all select 字段列表 ...

  2. Excel数据合并:一个文件夹里多个Excel文件,并且每个文件里有多个sheet表,全部合并为一个表

    用于当一个文件夹内有多个excel表,并且每个excel 里有多个sheet表的情况 import os import pandas as pdn=0 l=[] for file in os.walk ...

  3. sql 两表数据合并_多表查询SQL语句

    本篇文章中主要讲述以下内容: 一.表的加法 合并两张表的过程: 然后运用sql语句: select 课程号,课程名称 from course union select 课程号,课程名称 from co ...

  4. 数据结构中,“结点”的意思

    1.在数据结构的图形表示中,对于数据集合中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,简称结 点.在C语言中,链表中每一个元素称为"结点",每个结点都应包括两个 ...

  5. 数据结构中的“结点”和“节点”,到该底用哪个?

    数据结构中的"结点"和"节点",到该底用哪个? 在学习数据结构中的链表和树时,我们会遇到"结点"的概念,而在一些书籍和网站中,对链表和树的介 ...

  6. 数据结构中堆栈和内存堆栈的区别

    最近接触数据结构中的堆栈,想到了初学Java时,关于新实例化或者定义一个对象时候,声明对象,对象的变量名存放在栈内存中,当我们手动new之后,就会在堆内存中开辟一个空间,用来存放变量地址值,并将变量地 ...

  7. 线性表:1.什么是线性表

    线性表是数据结构中最简单的数据存储结构,可以理解为"线性的表". 线性,是说数据在逻辑结构上具有线性关系. 将具有线性关系的数据存储到计算机中所使用的存储结构称为 线性表 . 线性 ...

  8. c语言实现数据结构中的链式表

    以下是我用c语言实现数据结构中的链式表 #pragma once; #ifndef _STDLIB_H #include <stdlib.h> #endif #ifndef _ELEMTY ...

  9. ztree获取勾选节点数据并且与表单信息合并

    分别获取表单数据和ztree数据简单,但是如何把他们合并成一个合理的json数据? 解决方案: $('#save').click(function () {var nodes = zTree.getC ...

最新文章

  1. 监督学习、非监督学习、强化学习都是什么?终于有人讲明白了
  2. python 同步 事件 event 简介
  3. 调用Excel或Oracle数据,数据加载,selenium等使用实例
  4. linux中查看文件指定行的数据
  5. 使用 mono 编译 .NET Standard 应用
  6. tensorflow gpu安装_tensorflow-gpu安装配置
  7. linux导出Excel The maximum column width for an individual cell is 255 characters
  8. lisp编程 滑动轴承的auto_基于Visual Lisp的滑动轴承设计
  9. 保存Drawable资源为Bitmap文件
  10. ssh登录很慢,登录上去后速度正常问题的解决方法
  11. CAD导入arcgisMap进行shp导出异常现象
  12. trilateration三边测距算法及C语言实现(适用stm32)
  13. 使用人工智能加快海底数据处理-从粗略过滤到精细智能数据筛选
  14. MAC OS读取NTFS格式硬盘
  15. 《宽带与接入网技术》接入网的基本概念
  16. 自动生成带昵称的头像(仿照钉钉头像)
  17. Linux如何复制文件和文件夹到另一个目录
  18. codevs1034
  19. 教大家微信里投票的怎么刷票及微信投票怎么免费刷票攻略
  20. 一文详解泊车感知的摄像头需求

热门文章

  1. PyTorch实现的李沐《动手学深度学习》,登上GitHub热榜,获得1000+星
  2. PyTorch一年增长194%,超越TensorFlow指日可待
  3. 3D重建:硬派几何求解vs深度学习打天下?
  4. Google CVPR 2019最新成果!用神经架构搜索实现更好的目标检测
  5. 今日新出!旷视提出One-Shot模型搜索框架的新变体
  6. Github | ICCV2019论文1000余篇更新!附下载链接
  7. 【人工智能】《Python深度学习》
  8. 密歇根大学团队成果:自动驾驶视觉系统——Bio-LSTM: 三维步行姿势和步态预测的生物力学反馈神经网络
  9. linux 安卓git,在Linux系统上安装Git
  10. PyTorch实现自由的数据读取