1. 编写一个算法将一个头结点指针为pa的单链表A分解成两个单链表A和B,其头结点指针分别为pa和pb,使得A链表中含有原链表A中序号为奇数的元素,而链表B中含有原链表A中序号为偶数的元素。且保持原来的相对顺序。
typdef int ElemType;
typedef struct LNode{
ElemType data;
Struct LNode *next;
}LNode,*LinkList;
void divide(LinkList &pa,LinkList &pb){
pb=(LinkList)malloc(sizeof(LNode)); //链表B的头结点
pb->next=NULL;
LinkList r,p,q;
r=pb; //指针r一直指向链表B的尾结点
p=pa->next;
while(p!=NULL && p->next!=NULL){
q=p->next;
if(q!=NULL){
p->next=q->next;
r->next=q; //表示将序号为偶数的元素放入链表B中
r=q; //更新链表B的尾指针
p=p->next;
}
}
r->next=NULL;
}