ArrayList-求两个顺序表的交集,其中交集用第一个顺序表的空间ArrayList-求两个顺序表的交集,其中交集用第一个顺序表的空间
List-ArrayList-求两个顺序表的交集(用第一个顺序表的空间)
假设以两个按元素值递增有序排列的线性表A和B分别表示两个集合,现要求另辟一个线性表C,其元素为A和B中元素的交集,并表C中的元素也依值递增有序排列。试对顺序表编写求C的算法。(C中不能存在相同的值,利用A表空间存放表C) #include #include #define LIST_INIT_SIZE 100 //顺序表的长度
typedef struct { //顺序表
...
ArrayList-求两个顺序表的交集,其中交集用第一个顺序表的空间
List-ArrayList-求两个顺序表的交集(用第一个顺序表的空间)
假设以两个按元素值递增有序排列的线性表A和B分别表示两个集合,现要求另辟一个线性表C,其元素为A和B中元素的交集,并表C中的元素也依值递增有序排列。试对顺序表编写求C的算法。(C中不能存在相同的值,利用A表空间存放表C) #include
#include #define LIST_INIT_SIZE 100 //顺序表的长度
typedef struct { //顺序表
int *elem;
int length;
} ArrayList;
void initArrayList(ArrayList &arrayList) { //初始化一个顺序表
arrayList.elem = (int *)malloc(sizeof(int) * LIST_INIT_SIZE);
arrayList.length = 0;
}
void enInitList(ArrayList &arrayList, int *e) { //将数组元素导入顺序表
int *p = e, i = 0;
while(*p) {
arrayList.elem[i] = *p; p ++; i ++;
}
arrayList.length = i;
}
void deleteList(ArrayList &A, int i) { //删除链表A中的第i个数值
if(i < 0 || i > A.length - 1) return ;
int *p = &(A.elem[i]);
int *q = A.elem + A.length - 1;
for(p++; p<=q; p++) *(p - 1) = *p;
--A.length;
}
void printList(ArrayList arrayList) { //打印顺序表
int i;
for(i=0; i *q) { q ++; j ++;
} else if(*p < *q) { deleteList(A, k); i ++;
} else {
p ++; i ++; k ++; q ++; j ++;
if(k >= 1 && *p == *(p-1)) { //如果跟之前的重复,就删掉
deleteList(A,k);
i ++;
}
}
}
}
void main() {
ArrayList A, B;
initArrayList(A); initArrayList(B);
int a[LIST_INIT_SIZE] = {1, 3, 4, 6, 6, 14, 34, 56, 78, 89, 100, 120};
int b[LIST_INIT_SIZE] = {2, 3, 5, 6, 6, 14, 34, 70, 78, 89, 100, 122};
enInitList(A, a); enInitList(B, b);
printf("初始化的A:"); printList(A);
printf("初始化的B:"); printList(B);
intersectList(A, B);
printf("转换后的A,此时A为A和B的交集:"); printList(A);
printf("转换后的B:"); printList(B);
}
本文档为【ArrayList-求两个顺序表的交集,其中交集用第一个顺序表的空间】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。