加载中...

OI题解|顺序表的删除


信息奥赛题解|顺序表的删除


🚀 题目浏览

【题目描述】

对一个线性表进行删除操作。

【输入】

输入存在多组数据,以 EOF 结束。数据组数不超过 $10$ 组。

第一行有一个整数 $n\ (1\le n\le 9000)$,表示线性表的大小;

第二行有 $n$ 个整数,分别是 $list_1,list_2,\cdots,list_n$。

第三行有一个整数 $q$,表示 $q$ 次删除操作,接下来 $q$ 行,每行有一个整数 $k$,表示删除线性表中第 $k$ 个元素。

【输出】

对于每次删除操作输出一行,如果 $k$ 不合法,输出 $-1$, 否则输出删除的元素。

【输入样例】

5
3 2 1 5 4
3
5
5
2

【输出样例】

4
-1
2

☘️ 题解分析

STL容器 vector 的使用。


🧑🏻‍💻 C++ 代码

#include<bits/stdc++.h>

using namespace std;
typedef long long LL;
int n, tmp, q, k;

int main() {
    ios::sync_with_stdio(false);  //cin读入优化
    cin.tie(0);

    while (cin >> n) {
        // 用vector存储线性表
        vector<int> v;
        // 存入元素
        for (int i = 1; i <= n; i++) {
            cin >> tmp;
            v.push_back(tmp);
        }
        // q次删除
        cin >> q;
        while (q--) {
            cin >> k;
            // k不合法
            if (k < 1 || k > v.size()) cout << -1 << endl;
            else {
                // k合法,输出并删除第k个元素
                cout << v[k - 1] << endl;
                v.erase(v.begin() + k - 1);
            }
        }
    }

    return 0;
}

文章作者: Rickyの水果摊
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Rickyの水果摊 !
  目录