设线性表A=(a1,a2,…,am),B=(b1,b2,…,bn),试写一个按下列规则合并A,B为线性表C的算法,即使得
来源:学生作业帮 编辑:大师作文网作业帮 分类:数学作业 时间:2024/10/04 06:41:53
设线性表A=(a1,a2,…,am),B=(b1,b2,…,bn),试写一个按下列规则合并A,B为线性表C的算法,即使得
C=(a1,b1…,am,bm,bm+1,…,bn)当mn时.(n,m,+1均为下标的,由于受限只能这样了.
解:
// 将合并后的结果放在C表中,并删除B表
Status ListMerge_L(LinkList &A,LinkList &B,LinkList &C)
{
LinkList pa,pb,qa,qb;
pa=A->next;
pb=B->next;
C=A;
while(pa&&pb){
qa=pa;qb=pb;
pa=pa->next;pb=pb->next;
qb->next=qa->next;
qa->next=qb;
}
if(!pa)qb->next=pb;
pb=B;
free(pb);
return OK;
}
while(pa&&pb){是作什么用的啊,好像也起不了循环的作用,
if(!pa)qb->next=pb;
pb=B;
free(pb);
return OK;是什么意思,怎么解释?请高手帮忙一下,解决后绝对采纳,从未食言,
C=(a1,b1…,am,bm,bm+1,…,bn)当mn时.(n,m,+1均为下标的,由于受限只能这样了.
解:
// 将合并后的结果放在C表中,并删除B表
Status ListMerge_L(LinkList &A,LinkList &B,LinkList &C)
{
LinkList pa,pb,qa,qb;
pa=A->next;
pb=B->next;
C=A;
while(pa&&pb){
qa=pa;qb=pb;
pa=pa->next;pb=pb->next;
qb->next=qa->next;
qa->next=qb;
}
if(!pa)qb->next=pb;
pb=B;
free(pb);
return OK;
}
while(pa&&pb){是作什么用的啊,好像也起不了循环的作用,
if(!pa)qb->next=pb;
pb=B;
free(pb);
return OK;是什么意思,怎么解释?请高手帮忙一下,解决后绝对采纳,从未食言,
估计你是写错了LinkList pa,pb,qa,qb; 应该是 LinkList *pa,*pb,*qa,*qb;
Status ListMerge_L(LinkList &A,LinkList &B,LinkList &C)
{
\x09LinkList *pa,*pb,*qa,*qb;
\x09pa=A->next; //pa指向A的第二个节点,估计第一个节点没数据
\x09pb=B->next; //pb指向B的第二个节点
\x09C=A;
\x09while(pa&&pb){ //这个while就是循环啊,直到pa或pb指向NULL
\x09\x09qa=pa;\x09
\x09\x09qb=pb;
\x09\x09pa=pa->next; //pa指向下一个节点
\x09\x09pb=pb->next; //pb指向下一个节点
\x09\x09qb->next=qa->next; //创建新链表在qb节点后面插入qa节点
\x09\x09qa->next=qb; //qa后面插入qb节点
\x09}
\x09//if(!pa)qb->next=pb; //应该写错了吧.
\x09//pb=B;
\x09if(!pa)qb->next=pa; //如果B比A短,B最后一个节点的next指针指向A剩下的
\x09if(!pb)qa->next=pb; //如果A比B短,A最后一个节点的next指针指向B剩下的
\x09free(pb);
\x09return OK; //OK应该是你前面宏定义的吧,估计是#define OK 1
}
再问: 写错的那里应该怎么改啊,这是书中的答案不会这么容易错吧?
再答: LinkList 我不知道你是个指针还是不是指针,后面的是我理解的,你看看有没有错吧。hi 中告诉我看看
Status ListMerge_L(LinkList &A,LinkList &B,LinkList &C)
{
\x09LinkList *pa,*pb,*qa,*qb;
\x09pa=A->next; //pa指向A的第二个节点,估计第一个节点没数据
\x09pb=B->next; //pb指向B的第二个节点
\x09C=A;
\x09while(pa&&pb){ //这个while就是循环啊,直到pa或pb指向NULL
\x09\x09qa=pa;\x09
\x09\x09qb=pb;
\x09\x09pa=pa->next; //pa指向下一个节点
\x09\x09pb=pb->next; //pb指向下一个节点
\x09\x09qb->next=qa->next; //创建新链表在qb节点后面插入qa节点
\x09\x09qa->next=qb; //qa后面插入qb节点
\x09}
\x09//if(!pa)qb->next=pb; //应该写错了吧.
\x09//pb=B;
\x09if(!pa)qb->next=pa; //如果B比A短,B最后一个节点的next指针指向A剩下的
\x09if(!pb)qa->next=pb; //如果A比B短,A最后一个节点的next指针指向B剩下的
\x09free(pb);
\x09return OK; //OK应该是你前面宏定义的吧,估计是#define OK 1
}
再问: 写错的那里应该怎么改啊,这是书中的答案不会这么容易错吧?
再答: LinkList 我不知道你是个指针还是不是指针,后面的是我理解的,你看看有没有错吧。hi 中告诉我看看
向量A=(a1,a2),B=(b1,b2)线性相关的充要条件是…?
证明向量组线性相关已知,A:a1,a2,a3,B:b1,b2,b3.b1=a1-3a2-a3.b2=2a1+a2.b3=
向量组B:b1,b2,……,bm能由向量组A:a1,a2,……,am线性表示的充要条件是( )
一道线性代数题设向量组 B:b1,b2,...,br 能由向量组 A:a1,a2,...,an 线性表示为(b1,b2,
设矩阵A=[a1,a2,...an],B=[b1,b2.bn].c等于A的转置乘B,求的C行列式
设a1,a2,a3线性无关,b1=a1+2*a2,b2=2*a2+a*a3,b3=3*a3+2*a1,且线性相关,求a
设a1,a2...ar与b1,b2...bt分别是A和B行向量组的极大线性无关组
一道线代题求助已知向量组a1,a2,……am线性无关,而b1=a1+a2,b2=a2+a3,……,bm-1=am-1+a
设向量组B:b1,b2,b3,...,br能由向量组A:a1,a1,...,as线性表示为 ( b1,b2,...,br
n阶非奇异矩阵A的列向量为a1,a2...an,n阶矩阵B的列向量为b1 b2...bn若b1=a1+a2...bn=a
(线性代数)向量a1+a2=3b,则a1,a2,……as,b1,b2,……,bs线性相关吗
设向量a=(a1,a2,……an)的转置,b=(b1,b2...bn)的转置 都是非零向量,且a的转置*b=0,记n阶矩