数据结构中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 常常只是逐个控件进行操作,可惜这样开发效率并不高.那么能不能批量获取整个表单的值呢,以及批量为表单赋值. 一.取值 ...
随机推荐
- 【git】error: Your local changes to the following files
今天在服务器上git pull是出现以下错误: error: Your local changes to the following files would be overwritten by mer ...
- VB.NET让webbrowser控件中JS脚本错误最新方法(2013-09-16)
最近也是在项目中遇到了webbrowser控件中想关闭JS脚本错误窗口的问题,所以经过多次测试,终于用一段高效实用的代码完美解决webbrowser控件中JS脚本错误窗口关闭的问题. 通过创建一个子线 ...
- C++字符串之一(字符表示)
在C++中有两种类型可以用于表示字符,char和wchar_t. 但是字符串格式的标准却有很多种,如ASCII,UTF8,UTF16,UTF32等等.字符串的格式和char/wchar_t 的关系是什 ...
- Linux 下防火墙端口设置
方式1: /sbin/iptables -I INPUT -p tcp --dport 8011 -j ACCEPT #开启8011端口 /etc/rc.d/init.d/ipta ...
- mit java open course assignment #2
package come; public class Marothon { public static void FirstName(String[] args1,int[] args2){ int ...
- poj1922
Ride to School Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 18704 Accepted: 7552 D ...
- Windows下使用XManager访问Ubuntu 11.04的设置方法
1.Download the attached file and upload it to the server. And, enter the following command to update ...
- 用代码场景Spine人物
在使用Spine动画的时候可能会需要用代码创建,所以就小小的研究了一下 /// <summary> /// 加载一个spine的骨骼动画 /// </summary> /// ...
- struts2整合json要注意的问题
昨天struts2整合json,一直出错: There is no Action mapped for namespace / and action name ... HTTP Status 404 ...
- 斯坦福IOS开发第五课(第一部分)
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27706991 作者:小马 因为第五课的内容比較多.分两部分来写. 一 屏幕旋转基本 ...