AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

AcWing 827. 双链表    原题链接    简单

作者: 作者的头像   小纸条o--o ,  2019-05-26 19:48:53 ,  阅读 440


1


1

题目描述

blablabla

样例

blablabla

算法1

blablabla

时间复杂度分析:blablabla

C++ 代码

#include<cstdio>
#include<iostream>

using namespace std;

const int maxn=100005;

struct node{
    int pre,nxt,data;   //前驱和后继
}a[maxn];
int head,tot,rear;//head和rear指向头元素和尾元素

void L(int x)
{
    a[++tot].data=x;
    a[head].pre=tot;
    a[tot].nxt=head;
    head=tot;
    if(!rear) rear=tot;
}

void R(int x)
{
    a[++tot].data=x;
    a[rear].nxt=tot;
    a[tot].pre=rear;
    rear=tot;
    if(!head) head=tot;
}

void D(int k)
{
    if(head==k) head=a[k].nxt;
    if(rear==k) rear=a[k].pre;
    int ll=a[k].pre;
    int rr=a[k].nxt;
    a[ll].nxt=rr;
    a[rr].pre=ll;
}

void IL(int k,int x)
{
    a[++tot].data=x;
    a[tot].pre=a[k].pre;
    a[tot].nxt=k;
    a[a[k].pre].nxt=tot;
    a[k].pre=tot;
    if(head==a[tot].nxt) head=tot;
}

void IR(int k,int x)
{
    a[++tot].data=x;
    a[tot].nxt=a[k].nxt;
    a[tot].pre=k;
    a[a[k].nxt].pre=tot;
    a[k].nxt=tot;
    if(rear==a[tot].pre) rear=tot;
}

int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        char s[5];
        scanf("%s",s);
        if(s[0]=='L'){
            int x;
            scanf("%d",&x);
            L(x);
        }else if(s[0]=='R'){
            int x;
            scanf("%d",&x);
            R(x);
        }else if(s[0]=='D'){
            int k;
            scanf("%d",&k);
            D(k);
        }else if(s[1]=='L'){
            int k,x;
            scanf("%d%d",&k,&x);
            IL(k,x);
        }else{
            int k,x;
            scanf("%d%d",&k,&x);
            IR(k,x);
        }
    }
    int t=head;
    while(t)
    {
        printf("%d ",a[t].data);
        t=a[t].nxt;
    }
    cout<<endl;
    return 0;
}



2 评论


用户头像
福如东海   2019-05-26 12:42     回复

牛逼,你这是自我创新,不是按照yxc大佬的思路来的

用户头像
小纸条o--o   2019-05-26 13:39     回复

不是啊 参考网上写的

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息