void convertList(SeqList *l) {
int i;
int length = (l->size) / 2;
printf("length:【%d】\n", length);
printf("l->size:【%d】\n", l->size);
DataType temp;
for (i = 0; i < length; i++) {
int len = l->size - 1 - i;
temp = l->list[len];
l->list[len] = l->list[i];
l->list[i] = temp;
}
}
SeqList intersection(SeqList a, SeqList b) {
int len;
SeqList min, max;
if (a.size > b.size) {
len = b.size;
min = b;
max = a;
} else {
len = a.size;
min = a;
max = b;
}
SeqList p;
printf("len:【%d】\n", len);
printf("min:【%d】\n", min.list[0]);
printf("max:【%d】\n", max.list[0]);
int k = -1;
for (int i = 0; i < len; i++) {
for (int j = 0; j < max.size; j++) {
if (min.list[i] == max.list[j]) {
k++;
printf("K值:【%d】\n", k);
p.size = k + 1;
p.list[k] = min.list[i];
printf("交集元素:【%d】\n", p.list[k]);
printf("交集大小:【%d】\n", p.size);
}
}
}
printf("p.size:【%d】\n", p.size);
return p;
}
int ReInsert(SeqList *L, int i, DataType x) {
int j = 0;
for ( j = L->size; j > i; j--) {
L->list[j] = L->list[j - 1];
}
L->list[i] = x;
L->size++;
return 1;
}
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef int DataType;
#define MaxSize 10
#include "SeqList.h"
void convertList(SeqList *l) {
int i;
int length = (l->size) / 2;
printf("length:【%d】\n", length);
printf("l->size:【%d】\n", l->size);
DataType temp;
for (i = 0; i < length; i++) {
int len = l->size - 1 - i;
temp = l->list[len];
l->list[len] = l->list[i];
l->list[i] = temp;
}
}
int ReInsert(SeqList *L, int i, DataType x) {
int j = 0;
for ( j = L->size; j > i; j--) {
L->list[j] = L->list[j - 1];
}
L->list[i] = x;
L->size++;
return 1;
}
SeqList intersection(SeqList a, SeqList b) {
int len;
SeqList min, max;
if (a.size > b.size) {
len = b.size;
min = b;
max = a;
} else {
len = a.size;
min = a;
max = b;
}
SeqList p;
printf("len:【%d】\n", len);
printf("min:【%d】\n", min.list[0]);
printf("max:【%d】\n", max.list[0]);
int k = -1;
for (int i = 0; i < len; i++) {
for (int j = 0; j < max.size; j++) {
if (min.list[i] == max.list[j]) {
k++;
printf("K值:【%d】\n", k);
p.size = k + 1;
p.list[k] = min.list[i];
printf("交集元素:【%d】\n", p.list[k]);
printf("交集大小:【%d】\n", p.size);
}
}
}
printf("p.size:【%d】\n", p.size);
return p;
}
int main(void) {
SeqList l;
printf("初始化线性表...\n");
ListInitiate(&l);
ListPrint(&l);
printf("插入元素...\n");
for (int i = 0; i < MaxSize; i++) {
ListInsert(&l, i, (i + 3));
}
printf("遍历元素(转置前)...\n");
ListPrint(&l);
printf("遍历元素(转置后)...\n");
convertList(&l);
ListPrint(&l);
printf("\n");
getch();
printf("重写insert函数...\n");
printf("初始化线性表...\n");
ListInitiate(&l);
for (int i = 0; i < 10; i++) {
ReInsert(&l, i, (i + 10));
}
ListPrint(&l);
printf("\n");
getch();
printf("求两个顺序表的交集...\n");
SeqList a, b;
printf("初始化线性表【A】...\n");
ListInitiate(&a);
for (int i = 0; i < 5; i++) {
ReInsert(&a, i, (i + 0));
}
printf("集合【A】:");
ListPrint(&a);
printf("\n");
printf("初始化线性表【B】...\n");
ListInitiate(&b);
for (int i = 0; i < 5; i++) {
ListInsert(&b, i, (i + 3));
}
printf("集合【B】:");
ListPrint(&b);
printf("\n");
printf("开始求A B的交集【C】...\n");
SeqList c = intersection(a, b);
printf("遍历A B的交集【C】:\n");
ListPrint(&c);
printf("\n");
system("pause");
return 0;
}