pa=pa->next;
qa->next=A->next;//将当前最小结点插入A表表头
A->next=qa;
}
else{
qb=pb;
pb=pb->next;
()//将当前最小结点插入B表表头
A->next=qb;
}
}
while(pa){
qa=pa;
pa=pa->next;
qa->next=A->next;
A->next=qa;
}
while(pb){
qb=pb;
pb=pb->next;
qb->next=A->next;
A->next=qb;
}
pb=B;
qa->next=A->next;//将当前最小结点插入A表表头
A->next=qa;
}
else{
qb=pb;
pb=pb->next;
()//将当前最小结点插入B表表头
A->next=qb;
}
}
while(pa){
qa=pa;
pa=pa->next;
qa->next=A->next;
A->next=qa;
}
while(pb){
qb=pb;
pb=pb->next;
qb->next=A->next;
A->next=qb;
}
pb=B;
举一反三
- 1.假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。 //将合并逆置后的结果放在C表中,并删除B表 StatusListMergeOppose_L(LinkList&A,LinkList&B,LinkList&C) { LinkListpa,pb,qa,qb; pa=A; pb=B; qa=pa;//保存pa的前驱指针 qb=pb;//保存pb的前驱指针 pa=pa->next; pb=pb->next; A->next=NULL; C=A; while(pa&&pb){ if(pa->datadata){ qa=pa; pa=pa->next; qa->next=A->next;//将当前最小结点插入A表表头 A->next=qa; } else{ qb=pb; pb=pb->next; ()//将当前最小结点插入B表表头 A->next=qb; } } while(pa){ qa=pa; pa=pa->next; qa->next=A->next; A->next=qa; } while(pb){ qb=pb; pb=pb->next; qb->next=A->next; A->next=qb; } pb=B; free(pb); returnOK; }
- 简述以下算法的功能。void BB (LNode *s. LNode "q){[br][/br]p=s;while (p->next!=q) p=p->next;p->next =s;}//BBvoid AA(LNodc pa, LNode *pb){//pa和 pb分别指向单循环链表中的两个结点BB (pa,pb);BB(pb.pa) ;}//AA
- 分析下面的程序,下列说法中错误的是 ________ 。 #define NULL 0 #include "conio.h" struct stu { long num; char name[20]; int score; struct stu * next; }; int main() { struct stu *head,*p,*pa,*pb,*pc; pa=(struct stu *)malloc(sizeof(struct stu)); pb=(struct stu *)malloc(sizeof(struct stu)); pc=(struct stu *)malloc(sizeof(struct stu)); scanf("%ld%s%d",&pa->num,pa->name,&pa->score); scanf("%ld%s%d",&pb->num,pb->name,&pb->score); scanf("%ld%s%d",&pc->num,pc->name,&pc->score); head=pa; pa->next=pb; pb->next=pc; pc->next=NULL; p=head; while(p!=NULL) { printf("%ld,%s,%d\n",p->num,p->name,p->score); p=p->next; } }
- 某厂商生产两种产品A和B,需求曲线分别为PA=70-0.25Q,PB=60-0.2QB-0.4QA,两种产品的边际成本分别为25和20,企业获得利润最大,A、B产品的定价及产量() A: PA=47.5,PB=30 B: PA=30,PB=47.5 C: QA=50,QB=45 D: QA=QB=50
- 一个非空带头结点的单链表头指针为h,则在表头插入一个新的元素结点(由p所指向),正确的操作是()。 A: h->next=p->next;p->next=h->next->next; B: p->next=h->next;h->next=p; C: p->next=h->next;h->next=p; D: h->next=p->next;p->next=h;