现有ABC三个顺序表,、要求在顺序表A中删除BC中含有元素后构建新的顺序表并输出。结构体中数据为int类型。
#include <stdio.h>
#define MaxSize 10
#include <stdlib.h>
typedef struct List{
int data[MaxSize];
int length;
}List;
//初始化表里的元素
void InitList(List &L){
int i;
for(i=0;i<MaxSize;i++)
L.data[i]=0; //扫除内存,初始为0
L.length=0; //初始表长为0
}
//给表里输入数据
void Valuation(List &L){
int i=0;
int value;
printf("请输入表元素:\n");
for(i=0;;i++){
scanf("%d",&value);
if(value==9999) //输入int型数据(9999作为结束,不包含9999)
break;
L.data[i]=value;
L.length++;
}
}
//删除A表中含有BC中的元素
void Delete(List &A,List &B,List &C){
int i;
int j;
int k;
for(i=0;i<A.length;i++){ //外层一次循环,让B的所有数据和A.data[i];比较
for(j=0;j<B.length;j++){
if(B.data[j]==A.data[i]){ //如果B中数据有和A的数据相同,则...
for(k=i;k<=A.length;k++)
A.data[k-1]=A.data[k];
A.length--;
}
}
}
for(i=0;i<A.length;i++){ //让C和A中数据比较,和上面一样
for(j=0;j<C.length;j++){
if(C.data[j]==C.data[i]){
for(k=i;k<=A.length;k++)
A.data[k-1]=A.data[k];
A.length--;
}
}
}
printf("输出结果\n");
for(i=0;i<A.length;i++){
printf("%3d",A.data[i]); //输出表A的内容
}
}
int main()
{
List A,B,C;//声明表
InitList(A);//初始化顺序表
InitList(B);//初始化顺序表
InitList(C);//初始化顺序表
Valuation(A);//给表赋值
Valuation(B);//给表赋值
Valuation(C);//给表赋值
Delete(A,B,C);//删除后输出
return 0;
}