读书人

数据结构中La表的数据归并到Lb表中

发布时间: 2013-10-08 16:46:23 作者: rapoo

数据结构中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的指针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; }
数据结构中La表的数据归并到Lb表中

读书人网 >编程

热点推荐