数据结构中La表的数据合并到Lb表中
实验描述: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的指针elem if(!L.elem) exit(0);//如果没有分配成功 那么存储失败 L.length = 0;//长度为0 L.listsize = LIST_INIT_SIZE;//初始容量是100 return 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+1 if(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; }
数据结构中La表的数据合并到Lb表中的更多相关文章
- 怎样将结构完全一样的两个表的内容合并到一个表中,SQL语句
标签: SQL合并数据 2013-08-21 10:41 489人阅读 评论(0) 收藏 举报 分类: Oracle数据库(14) select * into 新表名 from (select ...
- django同时查询两张表的数据,合并检索对象返回
原始需求: 1.一篇文章内容分N个版块,每篇文章的版块数量不同. 2.有个文章搜索功能,需要同时搜索标题和内容. 实现思路: 1.由于每篇文章的内容版块数量不同,因此将每个文章的标题和内容分开存入2张 ...
- 数据结构中的顺序表和链表(Python语言)
转载:https://blog.csdn.net/weixin_43187669/article/details/96426362 算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题载体. ...
- [Data Structure] 数据结构中各种树
数据结构中有很多树的结构,其中包括二叉树.二叉搜索树.2-3树.红黑树等等.本文中对数据结构中常见的几种树的概念和用途进行了汇总,不求严格精准,但求简单易懂. 1. 二叉树 二叉树是数据结构中一种重要 ...
- Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)
1.Oracle表的管理 表名和列名的命名规则: 必须以字母开头: 长度不能超过30个字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z, a-z, 0-9, $, # 等. Oracl ...
- Kettle 实现mysql数据库不同表之间数据同步——实验过程
下面是试验的主要步骤: 在上一篇文章中LZ已经介绍了,实验的环境和实验目的. 在本篇文章中主要介绍侧重于对Kettle ETL的相应使用方法, 在这里LZ需要说明一下,LZ成为了避免涉及索引和表连接等 ...
- 数据结构中的棧在C#中的实现
数据结构中的棧在C#中的实现 一.大致学习 棧是一种面向表的数据结构,棧中的数据只能在标的某一短进行添加和删除操作,是一种典型的(LIFO)数据结构. 现实生活中的理解:自助餐厅的盘子堆,人们总是从顶 ...
- 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)
树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: BST树 ...
- 传统 HTML 表单数据的“整存整取”
在日常开发中,涉及表单的处理司空见惯.过往,在取值和赋值的过程中,借助 jQuery 常常只是逐个控件进行操作,可惜这样开发效率并不高.那么能不能批量获取整个表单的值呢,以及批量为表单赋值. 一.取值 ...
随机推荐
- Delphi检测网络连接状态
有时候,我们做一些小软件就需要检测网络连接状态,比如想给你的软件加上类似QQ那样的系统消息,可是像我这样的穷人肯定是买不起服务器了,那我们只好另想办法,可以读取网页然后用浏览器显示,这个时候就需要判断 ...
- TPen的7种Style和16种Mode
//TPen 的主要属性有四: Color.Width.Style.Mode {Color: 颜色} {Width: 宽度; 默认是 1; 如果赋予 <= 0 的值, 会使用默认值} {Styl ...
- C语言入门(15)——结构体与数据抽象
大多数的计算机运算是对现实世界的模拟,如果想用计算机来模拟现实世界需要用到数据抽象的方法.所谓抽象是从实际的人.物.事和概念中抽取所关心的共同特征,,忽略非本质的细节,吧这些特征用各种概念精确的加以描 ...
- LINQ 图解 LINQ学习第三篇 [转]
LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作 ...
- android 网络状态判断【转】
import java.net.InetAddress; import android.app.Activity;import android.content.Context;import andro ...
- sql中int字段实现百分比
首先: 用col*1.00 把int字段隐式转换成decimal类型. 然后: 用 round(col,2)来截取前两个小数前的数据 最后: 用 CONVERT(FLOAT,decimalNum)来转 ...
- SQL SERVER中变量的定义、赋值与使用
本文面向对SQL SERVER中变量操作不熟悉的用户,希望能使他们在看完本文后能对变量操作有具体和全面的认识. 在学习SQL SERVER的过程中,很多时候需要对某些单独的值进行调试,这时就需 ...
- 2014.12.01 B/S 使用VS建立Web网站
要求:从hr数据库info表读取数据,在Web网站中显示为如图: 用DW绘制一个表格,然后将代码拷贝到新建的网站主页代码中 <div> <table bgcolor=" w ...
- [RabbitMQ]Error: unable to connect to node rabbit@compute1: nodedown(CentOS7.0)
今天在搭建OpenStack的时候需要安装RabbitMQ,可是使用yum install rabbitmq-server安装之后,按照OpenStack官方提供的文档修改guest用户密码的时候却出 ...
- Serializable接口的背后
序列化是什么? 序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得.序列化分为两大部分:序列化和反序列化. 序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网 ...