题目描述:
C={a1,b1,a2,b2,……,an,bn}为线性表,采用带头结点的hc单链表存放,设计一个就地算法,将其拆分为两个线性表,使得A={a1,a2,……,an},B={bn,……b2,b1}
算法思想:
跟2.3.10雷同。
核心代码:
LNode* Depart_A_B(LNode* &La)
{
LNode* Lb;
Lb=(LNode*)malloc(sizeof(LNode));
Lb->next=NULL;
LNode* p=La->next;
La->next=NULL;
LNode *ra;
ra=La;//不应该是ra=La->next;不然你怎么尾插
int k=0;
while(p!=NULL)
{
LNode* r=p->next;
if(k%2==0)
{
ra->next=p;
ra=ra->next;
p=p->next;
k++;
}
else//如果要头插的话就得记住p后面的指针
{
p->next=Lb->next;
Lb->next=p;
p=r;
k++;
}
}
ra->next=NULL;
return L