设 C = { a1,b1,a2,b2,…,an,bn} 为线性表,采用带头结点的单链表存放,设计一个就地算法,将其拆分为两个线性表,使得A = {a1,a2,…,an},B = {bn,…,b2,b1}。
B表采用头插法建立。
LinkList Solve(LinkList &A){
LinkList B = (LinkList)malloc(sizeof(LNode));
B->Next = NULL;
LNode *p = A->next,*q;
LNode *ra = A; //ra始终指向 A 的尾结点
while(p){
ra->next = p;
ra->p;
p = p->next;
if(p) q = p->next; //头插法
p->next = B->next;
B->next = p;
p = q;
}
ra->next = NULL;
return B;
}