定义一个顺序表
typedef struct
{
int *p;
int length;
} list;
初始化顺序表
status csh(list &L)
{
L.p=new status(MAXSIZE);
if(!L.p)
exit(OVERFLOW);
L.length=0;
return ok;
}
数列之差即相同元素删除不同元素保留
status jian(list a,list b,list &c)
{
int i,q,w=0,e=0;
for(i=0;i<a.length;i++)
{
for(q=0;q<b.length;q++)
{
if(a.p[i]==b.p[q])
{
w=1;
}
}
if(w==0)
{
c.length++;
c.p[e]=a.p[i];
e++;
}
w=0;
}
for(i=0;i<c.length;i++)
{
printf("%d ",c.p[i]);
}
printf("\n");
return ok;
}
分析
建立一个顺序表来存储结果。以a中元素为母体,在b中元素中依次查找,只要在b中存在有一个元素与母体相同那么就不能将此值放入c中,这是一种特殊情况以一个特定值变量来表示此事件。之后通过这个特定值变量来判断该不该放入顺序表c中。
注意点
1.当给予指针赋值,后面要输出此值的时候要用指针。
相同的,当给予数组赋值,后面输出此值时要用数组。
如:a.p++=b.p[i]; i++;
这是给指针赋值,输出时不能用printf("%d ",a.p[i]);
。
赋值:c.p[e]=a.p[i] ; e++;
输出:printf("%d ",c.p[i]);
总结
a中元素依次与b中元素进行比较,若都不相同则保留在顺序表c中.以一特定值变量来表示b中存在与a相同的元素。再以此特定值变量来判断是否放入顺序表中。