王道课后习题2.3.10:将一个带头结点的单链表A分解为两个带头结点的单链表A和B,A表中含原表中序号为奇数的元素,B含偶数,保持相对顺序不变。

题目描述:

将一个带头结点的单链表A分解为两个带头结点的单链表A和B,A表中含原表中序号为奇数的元素,B含偶数,保持相对顺序不变。

算法思想:

设置一个k值判断判断奇偶。

核心代码:

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,*rb;

    ra=La;//不应该是ra=La->next;不然你怎么尾插
    rb=Lb;

    int k=0;
    while(p!=NULL)
    {
        if(k%2==0)
        {
            ra->next=p;
            ra=ra->next;
            p=p->next;
            k++;

        }
        else
        {
            rb->next=p;
            rb=rb->next;
            p=p->next;
            k++;
        }
    }
    ra->next=NULL;
    rb->next=NULL;
    return Lb;
}

条理要清晰。

你可能感兴趣的:(王道课后习题+)