A,B和C为三个递增有序的线性表,现要求对A表作如下操作:删去那些既在B表中出现又在 A,B和C为三个?D

作者&投稿:诏段 (若有异议请与网页底部的电邮联系)
已知A,B,C为三个元素值递增有序的线性表,要求对表A如下运算:删去那些既在表B中出现又在表C中出~

首先,三个表是有序的,要删除的实际是ai = bj = ck
三个元素不相等,可能出现的是ai<bj 或者bj<ck 或者ck<ai
void Difference_L(LinkList &a,LinkList &b,LinkList Lc)
{
pre = pa;//删除a表元素,必须记录元素前驱
pa = La->next; pb = Lb->next;pc = Lc->next;
while(pa&&pb&&pc)
{
if(pa->datadata){pre = pa;pa = pa->next;}

else if(pb->datadata) pb =pb->next;
else if(pc->datadata) pc = pc->next;

else{
pre->next = pa->next; delete pa; pa = pre ->next;

}

}
}

int Locate_Sq(sqList &L , ElemType e ,status equal(ElemType , ElemType))这样的函数声明是不允许的,函数不可以直接做函数的参数,可以考虑用函数指针作为参数。但是呢,你这里不需要使用这种方式,直接在你的函数里面调用equal函数就好。
int Locate_Sq(sqList &L , ElemType e ,status equal(ElemType , ElemType))函数的第一行,ElemType p,根据你后面用的,这里的p应该是个指针,因此呢,我猜应该这样写ElemType *p
int Locate_Sq该函数的作用应该是返回元素在表内的位置,如果没有该元素则返回一个不可能的值,例如-1,因此该函数的返回值应该改成,if(i<=L.length) return ;else return -1;
delete函数里,根据上面第3条,k=Locate_Sq(C,B.elem[i],equal);后面的if需要修改为,if(k==-1) i++;
delete函数里q=A.elem+A.length-1;这一句的思想是对的,但是里面变量类型需要注意搞一致。
delete函数里的for是用来把后面的元素向前移动,因此,指针需要向后移动,用后面的结点覆盖前面的结点,因此for得改为for(;p<q;++p) *p=*(p+1);
希望采纳,期待对你有帮助,欢迎追问

#include <iostream>
using namespace std;
int main()
{
int a[100],b[100],c[100],i,j,n,m,p,t; //设置count实现对两个数组元素是否相同进行判断
cout<<"输入集合La的元素个数:";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"输入集合La的第"<<i+1<<"个元素:"; //输入a[]的元素个数和其元素并打印数组a[]
cin>>a[i];
}
for(i=0;i<n;i++)
{
cout<<"a["<<i<<"]="<<a[i]<<endl; //输出a[]的各个元素
}
cout<<"输入集合Lb的元素个数:"; cin>>m;
for(i=0;i<m;i++)
{
cout<<"输入集合Lb的第"<<i+1<<"个元素:";
cin>>b[i]; //输入b[]的元素个数和其元素并打印数组b[]
}
for(i=0;i<m;i++)
{
cout<<"b["<<i<<"]="<<b[i]<<endl;
}
cout<<"输入集合Lc的元素个数:";
cin>>p;
for(i=0;i<p;i++)
{
cout<<"输入集合Lc的第"<<i+1<<"个元素:";
cin>>c[i];
}
for(i=0;i<p;i++)
{
cout<<"c["<<i<<"]="<<c[i]<<endl; //输入c[]的元素个数和其元素并打印数组c[]
}
for(j=0;j<m;j++)
{
for(i=0;i<n;i++)
{
if(a[i]!=b[j])
continue; //如果b[j]在a[]中没有相同的元素,跳出本次循环
else //如果两个数组有不一样的元素,将其中一个集合的元素存入到a[]中
{
for(t=i;t<n-1;t++) //否则依次用从第i元素后的元素覆盖之前的元素
{
cout<<a[t];
a[t]=a[t+1];
} n--;
}
}
}
for(j=0;j<p;j++) //用已经和b[]数组比较后的集合a[]继续和c[]集合进行比较,
{ //并删除其中相同的元素
for(i=0;i<n;i++)
{ if(a[i]!=c[j])
continue; //同上
else
{
for(t=i;t<n-1;t++) //同上
{
cout<<a[t];
a[t]=a[t+1];
}n--;
}
}

}
cout<<"删除后的集合为:"<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<endl; //打印合并后的集合
}
return 0;
}

你后面说的是什么啊,都不说清楚,叫我怎么答

若A、 B、 C三点共线则该直线外的任一点为?
答:若A、B、C三点共线则该直线外的任一点P,有PA向量=λPB向量+μPC向量,λ+μ=1。三点共线,是一个几何类问题,指的是三点在同一条直线上。可以设三点为A、B、C,利用向量证明:λAB=AC(其中λ为非零实数)。

高中必修一数学题
答:一、集合有关概念1. 集合的含义2. 集合的中元素的三个特性:(1) 元素的确定性如:世界上最高的山(2) 元素的互异性如:由HAPPY的字母组成的集合{H,A,P,Y}(3) 元素的无序性: 如:{a,b,c}和{a,c,b}是表示同一个集合3.集合的表示:{ … } 如:{我校的篮球队员},{太平洋,大西洋,印度洋,北冰洋}...

三个数a,b,c为不等于零的有理数,求(“/”为分数线,在前的为分子,后为...
答:解:①当a、b、c均为正数 ∴|a|=a,|b|=b,|c|=c ∴|a|/a+|b|/b+|c|/c=1+1+1=3 ②当a、b、c中只有一个数为负数,其他两个数为正数 设a为负数,则b、c为正数 ∴|a|=-a,|b|=b,|c|=c ∴|a|/a+|b|/b+|c|/c=-1+1+1=1 ③当a、b、c中有两个数为负数...

...数学,英语的成绩恰好为三个连续递增奇数,且其和为291,英语成绩为几...
答:设这三个数为a(语文),b(数学),c(英语),2×b=a+c 因为 a+b+c=291 3×b=291 b=97 ∴a=95,b=97,c=99 即英语成绩为99 qiyilin07 | 2012-11-13

每条线上三个数的和相等技巧
答:这个技巧被称为“等差数列求和公式”,假设每条线上的数分别为a,b,c,则该技巧可以表示为2b=a+c,即将中间数b表示为首项加末项除以2,可以将每条线上三个数的和变为3b=a+b+c,其中a+b+c为常数,所以每条线上三个数相加一样时,其中的每个数都可以用这个公式来表示。等差数列是指从第二项...

数据结构假设分别以两个元素的值递增有序线性表a,b表示两个集合,现在...
答:s->data=a[i];s->next=first->next;first->next=s;} return first;} void PrintList(){ Node *p;p=first->next;while(p){ cout<<p->data<<"\t";p=p->next;} } private:Node *first;};void Interest(Node *A, Node *B){ Node *p, *q;p=A->next; q=B->next;while(...

设有两个按元素值递增有序的顺序表A和B(单链表A和B),
答:设有两个按元素值递增有序的顺序表A和B(单链表A和B),编一程序讲A表和B表归并成一个新的递增有序的顺序表C(单链表C,值相同的元素均保留在C表中)。用VC++6.0设计一下程序... 设有两个按元素值递增有序的顺序表A和B(单链表A和B),编一程序讲A表和B表归并成一个新的递增有序的顺序表C(单链表C,值...

已知三个不同的实数abc满足a-b+c=3,方程x2+ax+1=0和x2+bx+c=0有一个...
答:①-②得(a-1)(3-c)(c-1)-(a-1)(c-1)^2=0。分解得(a-1)(c-1)(4-2c)=0 若a=1,则方程x^2+x+1=0无实根,所以a≠1。又c-1≠0,因此可得c=2,代入①得a=-2,由此得b=-3。二元一次方程一般解法:消元:将方程组中的未知数个数由多化少,逐一解决。消元的方法有两种...

A U B - C (A并B减C)用C/C++编写程序
答:include<iostream> using namespace std;int main(){ int Len_a,Len_b,Len_c,n;FILE *r=fopen("input.txt","rb");fscanf(r,"%d%d%d",&Len_a,&Len_b,&Len_c);n=Len_a+Len_b;int *array_a,*array_b,*array_c,*result;array_a=new int[Len_a];array_b=new int[Len_b];...

...C语言版:假设有两个元素递增的有序排列线性表A和B,均以单链表作存储...
答:char c;r=L;while(flag){ c=getchar();if(c!='$'){s=(Node *)malloc(sizeof(Node));s->data=c;r->next=s;r=s;} else {flag=0;r->next=NULL;} } } void PrintLinkList(LinkList L){printf("单链表为:L");LinkList r=L;while(r->next!=NULL){ r=r->next;printf("...