25王道数据结构2.37综合应用 06,08,12,13,14,15,16

目录

06 

08

12

13

14


全是自己写的,可能有不对的,欢迎大家斧正。 

06 

void measure06(LNode* head,LNode* nod1e,LNode* nod2e){
    LNode* node1=new LNode(0);
    LNode* node2=new LNode(0);
    nod1e->next=node1;
    nod2e->next=node2;
    LNode* next=head;
    while(next->next!=nullptr){
        node1->next=next->next;
        next=next->next;
        node1=node1->next;

        node2->next=next->next;
        node2=node2->next;
        next=next->next;
    }
    node1->next=nullptr;
    node2->next=nullptr;
    static LNode* arr[2]={node1,node2};
}

08

        

LinkList measure08(LNode* nodeA,LNode* nodeB){
    LNode* a=nodeA->next;
    LNode* b=nodeB->next;
    LinkList head=(LinkList)malloc(sizeof(LNode*));
    head->next=NULL;
    LinkList p=head;
    while(a!=nullptr||b!=nullptr){
        LinkList temp=(LinkList)malloc(sizeof(LNode*));
        // cout << "a:  " << a->data<< "b:   "<< b->data <<endl;
        if(a!=nullptr&&b!=nullptr){
            if(a->data<=b->data){
                cout << "a:  " << a->data;
                temp->next=NULL;
                temp->data=a->data;
                p->next=temp;
                p=p->next;
                a=a->next;
            }else if(b->data<a->data){
                cout << "b:  " << b->data;
                temp->next=NULL;
                temp->data=b->data;
                p->next=temp;
                p=p->next;
                b=b->next;
            }
        }else{
            if(a==nullptr){
                cout << "b:  " << b->data;
                temp->next=NULL;
                temp->data=b->data;
                p->next=temp;
                p=p->next;
                b=b->next;
            }else{
                cout << "a:  " << a->data;
                temp->next=NULL;
                temp->data=a->data;
                p->next=temp;
                p=p->next;
                a=a->next;
            }
        }
    }
    return head;

}

12

void measure12(LinkList h1,LinkList h2){
    LinkList p1=h1;
    while(p1->next!=h1){
        p1=p1->next;
    }
    p1->next=h2->next;
    p1=p1->next;
    while(p1->next!=h2){
        p1=p1->next;
    }
    p1->next=h1;
}

13

DLinkList insert(DLinkList L,DLinkList temp, int x){
    DLinkList p=L;
    while(p->next!=nullptr&&p->next->data>x){
        p=p->next;
    }
    //删除节点
    temp->pre->next=temp->next;
    temp->next->pre=temp->pre;
    temp->next=nullptr;
    temp->pre=nullptr;

    //插入
    if(p==L){
        temp->pre=L;
        temp->next=L->next;
        temp->next->pre=temp;
        L->next=temp;
    }else{
        DLinkList t=p->next;
        p->next=temp;
        temp->next=t;
        t->pre=temp;
        temp->pre=p;
    }
    return L;
}


DLinkList measure13(DLinkList L,int x){
    DLinkList p=L->next;
    while(p->next!=nullptr)
    {
       if(p->data==x){
        p->freq=p->freq+1;
        insert(L,p,p->freq);
        return p;
       }
       p=p->next;
    }
    return nullptr;
}

#define Locate measure13

14

LinkList measure14(LinkList head,int x){
    //先把最后一个节点跟前面连起来,最后再删掉
    LinkList p = head;
    int len=1;
    while(p->next!=nullptr){
        p=p->next;
        len++;
    }
    cout<<len<<endl;
    p->next=head;
    p=head;
    for(int i=0;i<len-(x%4)-1;i++){
        p=p->next;
    }
    head=p->next;
    p->next=nullptr;
    return head;

}

15

bool isCircle(LinkList head){
    LinkList f=head;
    LinkList s=head;
    while(s->next!=nullptr||f->next->next!=nullptr){
        if(s->next==f->next->next){
            return true;
        }
        s=s->next;
        f=f->next->next;
    }
    return false;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值