数据结构—求线性表的并集(救救孩子吧)
问题:假设有两个集合A和B分别用两个线性表LA和LB表示,即线性表中的数据元素即为集合中的成员,现要求求出一个新的集合A=A∪B。要求应用线性表提供的基本操作(初始化,求表长,取元素,定位/查找,插入等)来实现。输入数据共4行:
第1行:集合A的元素数
第2行:集合A中的元素(以空格间隔)
第3行:集合B的元素数
第4行:集合B中的元素(以空格间隔)
#include <stdio.h>
#include <stdlib.h>
#defineMAXSIZE100
#define OK 1
#define OVERFLOW -1
#define ERROR -2
typedefintElemType;
typedefintStatus;
typedefstruct {
ElemType*elem; // 顺序表数组的基址
int length; // 顺序表当前元素个数
} SqList;
Status initList(SqList &L);
Status listInsert(SqList &L,int i ,ElemType e);
void listUnion(SqList &La,SqList Lb);
void sortList(SqList &L);
void showList(SqList L);
int main(void) {
SqList La,Lb;
int n,i;
ElemType t;
if(initList(La)!=OK) exit(0);
if(initList(Lb)!=OK) exit(0);
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%d",&t);
if(listInsert(La,i,t)!=OK) exit(0);
}
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%d",&t);
if(listInsert(Lb,i,t)!=OK) exit(0);
}
listUnion(La,Lb);
sortList(La);
showList(La);
return 0;
}
Status initList(SqList &L) {
L.elem=(ElemType*)malloc(MAXSIZE*sizeof(ElemType));
if(!L.elem) exit(OVERFLOW);
L.length=0;
return OK;
}
int getLength(SqList L) {
}
Status listInsert(SqList &L,int i ,ElemType e) {
}
Status getElem(SqList L,int i,ElemType &e)
{
}
int locateElem(SqList L,ElemType e)
{
}
void listUnion(SqList &La,SqList Lb){
}
void sortList(SqList &L){
}
void showList(SqList L){
} 头像好瘆人……{:10_269:} 这是啥 焦健鬼 发表于 2020-5-17 12:27
这是啥
数据结构线性表的求并集问题 看不懂,飘过! 我已经写出了个大概,但好像还有一些细节问题有遗漏,一起来找找吧!
#include <stdio.h>
#include <stdlib.h>
#defineMAXSIZE100
#define OK 1
#define OVERFLOW -1
#define ERROR -2
typedefintElemType;
typedefintStatus;
typedefstruct {
ElemType*elem; // 顺序表数组的基址
int length; // 顺序表当前元素个数
} SqList;
Status initList(SqList &L);
Status listInsert(SqList &L,int i ,ElemType e);
void listUnion(SqList &La,SqList Lb);
void sortList(SqList &L);
void showList(SqList L);
int main(void) {
SqList La,Lb;
int n,i;
ElemType t;
if(initList(La)!=OK) exit(0);
if(initList(Lb)!=OK) exit(0);
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%d",&t);
if(listInsert(La,i,t)!=OK) exit(0);
}
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%d",&t);
if(listInsert(Lb,i,t)!=OK) exit(0);
}
listUnion(La,Lb);
sortList(La);
showList(La);
return 0;
}
Status initList(SqList &L) {
L.elem=(ElemType*)malloc(MAXSIZE*sizeof(ElemType));
if(!L.elem) exit(OVERFLOW);
L.length=0;
return OK;
}
int getLength(SqList L) {
return L.length;
}
Status listInsert(SqList &L,int i ,ElemType e) {
if(L.length==MAXSIZE||i<1||i>L.length+1)
return ERROR;
if(i<=L.length)
{
for(int j=L.length-1;j>=i-1;j--)
{
L.elem=L.elem;
}
}
L.elem=e;
L.length++;
return OK;
}
Status getElem(SqList L,int i,ElemType &e)
{
if(L.length==0||i<1||i>L.length)
return ERROR;
e=L.elem;
return OK;
}
int locateElem(SqList L,ElemType e)
{
int i;
for(i=0;i<=L.length-1;i++)
{
if(e==L.elem)
return i;
}
if(i==L.length)
return 0;
}
void listUnion(SqList &La,SqList Lb){
int i;
ElemType e;
for(i=0;i<=Lb.length-1;i++)
{
if(getElem(Lb,i,e)==OK)
{
if(!locateElem(La,e))
{
listInsert(La,La.length+1,e);
}
}
}
}
void sortList(SqList &L){
int l,empty;
l=getLength(L);
for(int i=1;i<l;i++)
{
for(int j=0;j<l-i;j++)
{
if(L.elem>L.elem)
{
empty=L.elem;
L.elem=L.elem;
L.elem=empty;
}
}
}
}
void showList(SqList L){
int l;
l=getLength(L);
for(int i=0;i<=l-1;i++)
{
printf("%d ",L.elem);
}
} hanjiang6607 发表于 2020-5-17 15:05
看不懂,飘过!
没关系,我已经写出了一点,但还有些细节错误找不出来,感兴趣的话一起来找找看吧!
页:
[1]