JAVA输出两个顺序链表的并集_用顺序表实现求两个集合的并集

#include

#include

#include

#include

#include

#include

#include

#include

#define OK 1

#define INIT_LiST_SIZE 100//顺序表的初始长度

#define LIST_ADD 10//顺序表每次增加的长度

#define ERROR 0

#define OVERFLOW 3

typedef int Elemtype;

typedef struct

{

Elemtype *elem;//顺序表的基地址

int length;//顺序表的当前长度

int listsize;//顺序表分配的长度

}SqList;

void InitList(Sqlist &La)//初始化顺序表

{

La.elem=(Elemtype *)malloc(INIT_LIST_SIZE*sizeof(int));//开辟100个一连串的地址,并强制转化为Elemtype类型

La.length=0;//顺序表的当前长度为0

La.listsize=100;//目前顺序表的总长度

}

Elemtype ListInsert(Sqlist &La,int i,int e)//在顺序表的第i个元素前一个位置插入元素e

{

if(i<1||i>La.length+1)return ERROR;//表示插入位置不合理

if(La.listsize>=La.length)

{

Elemtype *newbase=(Elemtype *)realloc(La.elem,(INIT_LIST_SIZE+LIST_ADD)*sizeof(int));//给当前顺序表增加长度

La.elem=newbase;//将新开辟的一片连续地址的首地址赋给基地址

}

int *q=La.elem[i-1];

for(int *p=La.elem[lLa.length-1];p>=q;p--)

{

*(p+1)=*(p);//j将顺序表的最后一个元素到*q这个元素一次向后移一个位置

}

*q=e;//插入元素

La.length++;//顺序表的长度加1

return OK;

}

SqList Union(SqList La,SqList Lb,SqList &Lc)//求两个集合的相同元素并插入到Lc中

{

int La_len=La.length;

int Lb_len=Lb.length;

int i=1;

for(int *p=La.elem;p<=La.elem[La_len-1];p++)

for(int *q=Lb.elem;q<=Lb.elem[Lb_len-1];q++)//此处类似于冒泡排序法

{

if(*p==*q)

{

ListInsert(Lc,i;*p);

i++;

break;//此处的break可以减少不必要的查找,减少计算机的工作量

}

}

return Lc;

}

void Print(SqlList La)//输出函数

{

for(int *p=La.elem;p<=La.elem[La.length-1];p++)cout<

}

void main()

{

int a[3]={1,2,3};

int b[4]={1,2,3,4};

SqList La,Lb,Lc;

InitList(La);

InitList(Lb);

InitList(Lc);

for(int i=1;i<=3;i++)ListInsert(La,i,a[i-1]);//将数组a的元素插入到La中

for(int j=1;j<=4;j++)ListInsert(Lb,j,b[j-1]);//将数组b中的元素插入到Lb中

Print(Union(La,Lb,Lc));

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值