zoukankan      html  css  js  c++  java
  • 注意!!

    链表的头跟尾的删除与添加要特判

    链表为空要特判

    pool的pt位置与后面要对应

    #include<cstdio>
    using namespace std;
    int readint(){
        int ans=0,f=1;
        char c=getchar();
        while(!(c>='0'&&c<='9')){
            if(c=='-') f=-1;
            c=getchar();
        }
        while(c>='0'&&c<='9'){
            ans=ans*10+c-'0';
            c=getchar();
        }
        return f*ans;
    }
    const int maxn=23009;
    struct node{
        int w;
        node*nt,*rd;
        node():w(0),nt(NULL),rd(NULL){}
        node(int W):w(W),nt(NULL),rd(NULL){}
    }x[maxn],*head,*tail,*pt=x;
    int n,m,k,num;
    int W;
    void add(){
        pt->w=W;
        pt->nt=pt->rd=NULL;
        if(head==NULL) tail=head=pt;
        else{
            tail->nt=pt;
            tail=pt;
        }
        pt++;
    }
    void init(){
        head=tail=NULL;
    }
    int main(){
        init();
        n=readint();m=readint();k=readint();num=readint();
        for(int i=0;i<n;i++){
            W=readint();
            add();
        }
        node*t=head,*pre=head;
        for(int i=0;i<n;i++){
            W=readint();
            if(W!=-1) x[i].rd=x+W;
        }
        for(int i=0;i<m;i++){
            W=readint();
            for(t=head,pre=head;;W--,pre=t,t=t->nt){
                if(!W){
                    if(t==head) head=head->nt;
                    else pre->nt=t->nt;
                    for(int i=0;i<n;i++) if(x[i].rd==t) x[i].rd=NULL;
                    break;
                }
            }     
        }
        for(int i=0;i<k;i++){
            W=readint();
            int pos=readint(),tar=readint();
            pt++;
            pt->w=W;
            if(pos==0){
                pt->nt=head;
                head=pt;
                if(tar==-1) pt->rd=NULL;
                else for(node*tmp=head;;tar--,tmp=tmp->nt){
                    if(!tar){
                        pt->rd=tmp;
                        break;
                    }
                }
            }else for(t=head,pre=head;;pos--,pre=t,t=t->nt){
                if(!pos){
                    pre->nt=pt;
                    pt->nt=t;
                    if(tar==-1) pt->rd=NULL;
                    else for(node*tmp=head;;tar--,tmp=tmp->nt){
                        if(!tar){
                            pt->rd=tmp;
                            break;
                        }
                    }
                    break;
                }
            }
        }
        node*T=head;
        for(;;num--,T=T->nt){
            if(!num) break;
        }
        for(t=T;t!=NULL;t=t->nt){
            printf("%d",t->w);
            printf(t->nt==NULL?" -1
    ":" ");
        }
        for(t=T;t!=NULL;t=t->rd){
            printf("%d",t->w);
            printf(t->rd==NULL?" -1
    ":" ");
        }    
        if(T==NULL) printf("-1
    -1
    ");
        return 0;
    }
    View Code
  • 相关阅读:
    stringstream用法
    来到上海了
    [转]强悍!情书居然能写得如此专业
    asp.net控件开发基础(23)
    当你遇到internal的时候
    asp.net控件设计时支持(3)
    asp.net控件设计时支持(5)
    CS中的缓存类,保证都看的懂
    快要毕业了
    asp.net控件设计时支持(4)
  • 原文地址:https://www.cnblogs.com/chensiang/p/9770104.html
Copyright © 2011-2022 走看看