数据结构中求交集的C程序,谢谢~~
这是本人所做的一个求交集的C程序,但运行结果总是不对,请帮我看看是哪里错了,谢谢~~ # include "datastru.h"
# include <stdio.h>
int del (SEQUENLIST *a, int i)
{
int k;
if(i<1 || i > a->last || a->last==0)
return 0;
else {for(k=i;k < a->last;k++)
a->datas[k-1]=a->datas[k];
a->last--;
return k; }
}
int locate (SEQUENLIST *a,DATATYPE1 i)
{int k;
k=1;
while(k<=a->last && a->datas[k]!=i)
k++;
if(k<=a->last)
return k;
else return 0;
}
void jiaoji ( SEQUENLIST la, SEQUENLIST *lb)
{
int i;
for ( i = 1 ; i <= la.last ; i++)
if(!locate(lb,la.datas)) /*如果la表中元素不在lb表中,*/
del ( &la, la.datas);
/*则将 la表中的该元素删除*/
}
main( )
{ SEQUENLIST a, b;
int i, j, k;
printf("请输入la顺序表元素,元素为整型量,用空格分开,-99为结束标志 :");
j = 0; k = 1; i = 0; scanf("%d",&i);
while (i != -99) { j++; a.datas[k] = i; k++; scanf("%d",&i); } /*输入la顺序表元素*/
a.last = j;
printf("\nla顺序表元素列表 :");
for (i = 1; i<=a.last; i++)
printf("%d ",a.datas);
printf("\n");
printf("\n请输入lb顺序表元素,元素为整型量,用空格分开,-99为结束标志 :");
j = 0; k = 1; i = 0; scanf("%d",&i);
while (i != -99) { j++; b.datas[k] = i; k++; scanf("%d",&i); } /*输入lb顺序表元素*/
b.last = j;
printf("\n\nlb顺序表元素列表 :");
for (i = 1; i<=b.last; i++)
printf("%d ",b.datas);
printf("\n");
jiaoji (a,&b);
printf("\n\n顺序表交集后la (la jiao lb) = ");
for (i = 1; i <= a.last; i++)
printf(" %d",a.datas);
printf("\n");
}
[[it] 本帖最后由 goodbaby 于 2008-9-22 21:01 编辑 [/it]]