Advertisement

请设计用于将带头结点单链表A分解为两个同样结构的小型单链表B和C的方法:其中B列表包含所有小于零节点的数据项

阅读量:

**【题目分析】:

采用后插法将数值小于0的节点插入至Lb中,pre用于记录pa的前驱节点。当节点值小于0时,执行pre->next=pa->next的操作,从而实现对小于0元素的删除。若节点值大于0,则将pra设置为pa,并令pa指向其下一个节点,此时pre仍用于保存当前pa的前驱节点。

算法设计与实现

复制代码
    void Resolve(Linklist &La, Linklist &Lb)
    {
    Linklist pre = La;
    Linklist pb = Lb;
    Linklist pa = La;
    pa = pa->next;
    while (pa)
    {
        if (pa->date < 0)
        {
            Linklist p = new Lnode;
            p = pa;               //生成新节点
            pre->next = pa->next; //删除小于0的节点,pre始终为pa的前驱
            pa = pa->next;        //pa后移
            p->next = NULL;       //后插法将元素插入Lb中

全部评论 (0)

还没有任何评论哟~