ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【数据结构1-1】线性表 P1160 队列安排

2021-11-01 20:35:42  阅读:145  来源: 互联网

标签:node 线性表 int void pos cin 插入 P1160 数据结构


题解

显然是个简单的链表,分别写好左插入、右插入和删除即可。

注意

写插入代码的时候注意操作的顺序,不然会对后续操作造成影响。

AC代码

#include<bits/stdc++.h>
using namespace std;

struct Node{
    int l,r;
}node[100010];

void addleft(int x,int pos){
    node[x].l=node[pos].l;
    node[x].r=pos;
    node[node[pos].l].r=x;
    node[pos].l=x;
}

void addright(int x,int pos){
    node[x].l=pos;
    node[x].r=node[pos].r;
    node[node[pos].r].l=x;
    node[pos].r=x;
}

void del(int x){
    if(node[x].l==-1) return;
    node[node[x].l].r=node[x].r;
    node[node[x].r].l=node[x].l;
    node[x].l=-1;
    node[x].r=-1;
}

int main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    node[1].l=0;
    node[1].r=100001;
    node[0].r=1;
    node[100001].l=1;
    int n,m,k,p;
    cin>>n;
    for(int i=2;i<=n;i++){
        cin>>k>>p;
        if(p==0) addleft(i,k);
        else if(p==1) addright(i,k);
    }
    cin>>m;
    while(m--){
        cin>>k;
        del(k);
    }
    int i=node[0].r;
    do{
        cout<<i<<' ';
        i=node[i].r;
    }while(i!=100001);
    cout<<endl;
    return 0;
}

标签:node,线性表,int,void,pos,cin,插入,P1160,数据结构
来源: https://www.cnblogs.com/Diffelentor/p/15495983.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有