📌  相关文章
📜  教资会网络 | UGC-NET CS 2017 年 12 月 2 日 |问题 1(1)

📅  最后修改于: 2023-12-03 15:10:16.641000             🧑  作者: Mango

UGC-NET CS 2017 年 12 月 2 日

问题 1

本题包括对数据结构和算法的基本知识点的考查,其中主要考查了队列和递归的应用。

题目描述

有一个队列并对其进行一系列操作,以下是具体步骤:

  1. 首先将队列中前k(k>0)个元素逆序,其余元素不变。
  2. 将整个队列逆序。
  3. 然后输出队列中第m个元素。

假设这个队列非空,且m<=队列长度。请编写一个函数,给定队列和k、m的值,并返回输出的结果。

输入格式
  1. 队列长度n,元素值为正整数。
  2. 队列中元素的值,以空格分隔。
  3. k表示需要逆序的前k个元素。
  4. m表示需要输出的元素所在的位置(位置从1开始数)。
输出格式

返回需要输出的数值,每个输出结果占一行。

示例

输入样例:

5
1 2 3 4 5
2
3

输出样例:

4
代码实现
def reverse(queue, k):
    # 取前k个元素
    for i in range(k):
        queue.append(queue.pop(0))
    # 前k个元素逆序
    for i in range(k // 2):
        queue[i], queue[k - i - 1] = queue[k - i - 1], queue[i]
    return queue

def reverse_queue(queue):
    queue.reverse()
    return queue

def find_mth(queue, m):
    return queue[m - 1]

# 主函数
if __name__ == "__main__":
    n = int(input())
    queue = list(map(int, input().split()))
    k = int(input())
    m = int(input())

    queue = reverse(queue, k)
    queue = reverse_queue(queue)
    res = find_mth(queue, m)

    print(res)

其中,reverse函数实现了队列中前k个数的逆序,reverse_queue函数实现了整个队列的逆序,find_mth函数实现了获取第m个元素的值。在主函数中,首先读取输入的值,然后按题目要求对队列进行操作,最后输出结果。