数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合???????

1:若LA和LB分别表示两个集合A和B,求新集合A=A∪B(相同元素不保留)预测输出LA=(3,5,8,11,2,6,9,15,20)
2:若LA和LB分别表示两个集合A和B,求新集合A=A∪B(相同元素保留)预测输出LA=(2,3,5,,6,8,8,9,11,11,15,20)

回答OK的话再加分!!谢谢
数据结构(C语言版)设有线性表LA(3,5,8,11)和LB(2,6,8,9,11,15,20)求新集合

第1个回答  推荐于2018-03-28
#include <stdio.h>
#include <stdlib.h>
#define list_init_size 100
#define listincrement 10

typedef struct
{ int *elem;
int length;
int listsize;
} sqlist;

int initsqlist (sqlist *l)//初始化
{
l->elem=(int *)malloc(list_init_size*sizeof(int));
if(!l->elem)
exit(0);
l->length=0;
l->listsize=list_init_size;
return 0;
}

int listinsert_sq(sqlist *l,int i,int e)//插入一个元素
{
int *p,*q;
if(i<1||i>l->length+1)
exit(0);
q=&(l->elem[i-1]);
for(p=&(l->elem[l->length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++l->length;
return 0;
}

void add(sqlist *l,int e)//添加到最后
{
listinsert_sq(l,l->length+1,e);
}

void disp(sqlist *l)
{
int i;
for(i=0;i<l->length;i++)
printf("%d ",l->elem[i]);
printf("\n");
}

int find(sqlist *l,int e)//查找元素是否存在
{
int i,t=-1;
for(i=0;i<l->length;i++)
if(l->elem[i]==e)
{t=i;break;}
return t;
}

void opt_1(sqlist *la,sqlist *lb)//(相同元素不保留)
{
int i,j;
for(i=0;i<lb->length;i++)
{
j = find(la,lb->elem[i]);
if(j==-1)
listinsert_sq(la,la->length+1,lb->elem[i]);
}
}

void sort(sqlist *la) //排序
{
int i,j,k;
for(i=0;i<la->length;i++)
for(j=i+1;j<la->length;j++)
{
if(la->elem[i]>la->elem[j])
{
k = la->elem[i];
la->elem[i] = la->elem[j];
la->elem[j] = k;
}
}
}

void opt_2(sqlist *la,sqlist *lb)//(相同元素保留)
{
int i,j;
for(i=0;i<lb->length;i++)
{
j = find(la,lb->elem[i]);
if(j!=-1)
listinsert_sq(la,j+1,lb->elem[i]);
else
listinsert_sq(la,la->length+1,lb->elem[i]);

}
sort(la);
}

int main()
{
sqlist La,Lb;

initsqlist(&La);
add(&La, 3);
add(&La, 5);
add(&La, 8);
add(&La, 11);

initsqlist(&Lb);
add(&Lb, 2);
add(&Lb, 6);
add(&Lb, 8);
add(&Lb, 9);
add(&Lb, 11);
add(&Lb, 15);
add(&Lb, 20);

disp(&La);
disp(&Lb);

opt_1(&La,&Lb);//操作(相同元素不保留)
disp(&La);

La.length = 0; //重新初始化La
add(&La, 3);
add(&La, 5);
add(&La, 8);
add(&La, 11);

opt_2(&La,&Lb);//操作(相同元素保留)
disp(&La);

return 0;
}

输出:
3 5 8 11
2 6 8 9 11 15 20

3 5 8 11 2 6 9 15 20
2 3 5 6 8 8 9 11 11 15 20本回答被提问者和网友采纳

数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20...
k = la->elem[i];la->elem[i] = la->elem[j];la->elem[j] = k;} } } void opt_2(sqlist *la,sqlist *lb)\/\/(相同元素保留){ int i,j;for(i=0;i<lb->length;i++){ j = find(la,lb->elem[i]);if(j!=-1)...

设有线性表LA=(3,5,8,11)和LB=(2,6,8,9,11,15,20),若LA和LB分别表示两...
else opt_1(&La,&Lb);\/\/操作(相同元素不保留)} 输出:3 5 8 11 2 6 8 9 11 15 20 3 5 8 11 2 6 9 15 20 2 3 5 6 8 8 9 11 11 15 20 线性表 中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适...

数据结构c语言版一道题求解
,element[n - 1]存放线性表中的元素 *\/}; typedef struct SeqList *PSeqList;PSeqList createNullList_seq(int m ) {\/* 创建新的顺序表 *\/ PSeqList palist= (PSeqList)malloc(sizeof(struct SeqList)); if (palist!=NULL){ palist->element= (DataType*)malloc(sizeo...

有序表的合并(顺序有序表,链式有序表)
1.初始化指针pa和pb,让其指向链表LA和LB中的首元结点(准备第一次比较)2.LC的头结点利用LA或者LB中的头结点(这里用到的是LA中的头结点)3.初始化指针pc,使其指向LC中的头结点 4.当pa!=NULL并且pb!=NULL时循环执行以下操作 5.判断LA表是否为空,若不为空,修改pc所指结点的指针域的指向...

请用C语言编程实现 1. 已知线性表LA和LB中的数据元素按值非递增有序排 ...
void main(){ int a[]={1,8,11,14,25};int b[]={1,3,5,7,9,11,13,14,15,18,33};int c[16];int a1=0,b1=0;for(int i=0;i<16;i++){ if(a1<5&&b1<11){ if(a[a1]<b[b1]){c[i]=a[a1];a1++;}else{c[i]=b[b1];b1++;} } else if(a1<5){c[i]=a[...

【100分】数据结构——使用C语言(线性表)
void initList(sqlist &La){\/\/构造一个空线性表L La.elem=(int *) malloc(100 *sizeof(int));\/\/分配空间 if (!La.elem) exit(-2);\/\/未分配则 跳出;La.length=0;La.listsize= 100 ;} int Listinsert_sq(sqlist &L,int i,int e) \/\/ listinsert_sq;插入一个元素 {int *...

利用两个线性表La和Lb分别表示两个集合A和B,现要求一个新的集合A=A&B...
如果这两个数组是整型数组,那么可以用一个布尔数组纪录A和B当中的数(如果有则把对应的元素设为TRUE),然后从头到尾扫描布尔数组,把布尔值为TRUE的放入另一个数组当中(或覆盖掉A)就可以了。如果这两个数组不是整型,而是实型的话,那么我建议你使用二叉排序树来实现,它使查找每个元素的时间复杂度降...

数据结构(C语言版)图书目录
第1章 数据结构概述 1.1 数据结构研究的问题1.1.1 计算机解决实际问题的一般步骤1.1.2 数据结构学科概念及其研究内容1.1.3 数据结构建模举例 1.2 有关概念1.2.1 数据相关概念1.2.2 数据结构术语1.2.3 数据类型概念 1.3 算法与性能分析1.3.1 算法概念及其特点1.3.2 算法设计...

数据结构的习题(C语言版)
第一个问题,分析下要求,可以知道要做的事情是合并两个数组到一个数组里去,数组C的长度是AB之和。表C的第一个字符不是A的第一个字符就是B的第一个字符。因此接下来要做的事情就是做一个长度为AB之和的循环,每一次找出A或B中的最小元素,存到C里面去,循环结束,C就自动有了。第二个问题...

哪位大佬有 数据结构与算法(C语言版),求发这教材的网盘链接
https:\/\/pan.baidu.com\/s\/1nNt35bE8FY9EwtgEzRtSKQ pwd=1234 提取码:1234 内容简介 《数据结构与算法:C语言版》是2010年10月1日机械工业出版社出版的图书。该书共10章,一方面,涵盖数据结构的基本概念,定义了线性表、栈、队列、串、数组、广义表、树和二叉树、图、查找、排序等各种结构的...

相似回答