首页 > 其他分享 >18989 卡片队列

18989 卡片队列

时间:2024-08-05 12:23:50浏览次数:12  
标签:right 卡片 队列 18989 int 邻居 nodes left

这个问题可以通过使用链表数据结构来解决。我们可以使用一个数组来存储每个卡片的左右邻居,然后对于每个插入操作,我们都更新相应的邻居信息。

以下是使用C++的代码实现:

#include <iostream>
#include <vector>
using namespace std;

struct Node {
    int left, right;
};

int main() {
    int N;
    cin >> N;
    vector<Node> nodes(N + 1);
    for (int i = 2; i <= N; i++) {
        int x, p;
        cin >> x >> p;
        if (p == 0) {
            nodes[i].right = x;
            nodes[i].left = nodes[x].left;
            nodes[nodes[x].left].right = i;
            nodes[x].left = i;
        } else {
            nodes[i].left = x;
            nodes[i].right = nodes[x].right;
            nodes[nodes[x].right].left = i;
            nodes[x].right = i;
        }
    }
    int x = 1;
    while (nodes[x].left != 0) {
        x = nodes[x].left;
    }
    while (x != 0) {
        cout << x << " ";
        x = nodes[x].right;
    }
    return 0;
}

在这段代码中,我们首先读取输入的卡片数N。然后我们创建一个数组来存储每个卡片的左右邻居。然后我们对于每个插入操作,我们都读取输入的x和p,然后更新相应的邻居信息。��后,我们从最左边的卡片开始,依次输出每���卡片的编号。

标签:right,卡片,队列,18989,int,邻居,nodes,left
From: https://blog.csdn.net/huang1xiao1sheng/article/details/140923684

相关文章

  • 【C++从小白到大牛】栈和队列(优先级队列)
    目录引言:使用方法篇:stack:queuepriority_queue使用方法:模拟实现篇:stack:原码:queue原码:priority_queue插入和删除数据的思想:仿函数实现比较原码:引言:本文主要讲解C++STL库中stack、queue、priority_queue的使用方法和模拟实现。我们首先需要对stack、queue进......
  • 《塔纳的队列》解题报告
    《塔纳的队列》解题报告Hello,ladiesandgentlemen,welcometo智客airline.女士们先生们您好,欢迎搭乘csdn航空公司。题目描述:塔纳终于有了和伦巴那酋长面谈的机会,可是在他前面还有很多各地来的进贡者也需要见酋长,所以塔纳被安排在了一个长长的队伍里面。这个队伍一共有n......
  • 栈和队列——4.前k个高频元素
    力扣题目链接给定一个非空的整数数组,返回其中出现频率前k高的元素。示例:输入:nums=[1,1,1,2,2,3],k=2输出:[1,2]题干很简单,就是对数组中的元素进行频次计算,找到频次最多的前k和元素。那么首先就要统计元素出现的频率,然后对其进行排序,返回前k个值。统计频率很简单,用......
  • 数据结构 -- 栈和队列
    数据结构--栈和队列1.栈1.1栈的概念及结构1.2栈的实现2.队列2.1队列的概念及结构2.2队列的实现3.栈和队列面试题4.概念选择题1.栈1.1栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端......
  • [消息队列]延迟消息
    死信队列是什么死信,在官网中对应的单词为“DeadLetter”,可以看出翻译确实非常的简单粗暴。那么死信是个什么东西呢?“死信”是RabbitMQ中的一种消息机制,当你在消费消息时,如果队列里的消息出现以下情况:消息被否定确认,使用channel.basicNack或channel.basicReject,并且此时re......
  • Rabbitmq中的死信队列
    背景        RabbitMQ死信队列俗称,备胎队列;消息中间件因为某种原因拒收该消息后,可以转移到死信队列中存放,死信队列也可以有交换机和路由key等。原理        死信队列和普通队列区别不是很大        普通与死信队列都有自己独立的交换机和路由ke......
  • JAVA中实现队列和栈(Deque接口和ArrayDeque类)
    用什么来实现队列和栈首先JAVA中有一个Queue接口,用来实现队列。Deque其实就是双端队列,代表两端都可进可出的队列。ArrayDeque就是用数组来实现这个双端队列。(Deque由于是接口,只可以用于声明对象,但是没办法实例化,实例化还是要使用ArrayDeque类)这时可能就会产生疑惑,队列有了,......
  • 【leetcode232:用栈实现队列】
    leetcode232:用栈实现队列题目:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素booleanemp......
  • 用队列实现栈
    请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:voidpush(intx) 将元素x压入栈顶。intpop() 移除并返回栈顶元素。inttop() 返回栈顶元素。booleanempty() 如果栈是空的,返回 true ;否则......
  • 线性表之--栈和队列
    1. 栈的表示和实现1.1栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原则。压栈:栈的插入操作叫做进栈/压......