修改代码实现以下要求
#include <bits/stdc++.h>using namespace std;
#define int long long
const int N = 2e5 + 5;
int q, x, y, p, mark;
list<int> l;
list<int>::iterator it, tempit;
void solve()
{
cin >> q;
while (q--)
{
cin >> p;
if (p == 1)
{
cin >> x >> y;
if (y != 0)
{
if (l.empty())
{
l.push_front(y);
it = l.begin();
}
if (it == l.end())
{
l.push_back(x);
it = --l.end();
}
else
{
tempit = it;
tempit++;
it = l.insert(tempit, x);
}
}
else
{
l.push_front(x);
it = l.begin();
}
}
else
{
cin >> x;
if (mark == 1)
continue;
mark = 1;
l.erase(it);
}
}
cout << l.size() << endl;
for (tempit = l.begin(); tempit != l.end(); tempit++)
{
cout << *tempit << " ";
}
}
signed main()
{
int t;
t = 1;
while (t--)
{
solve();
}
}
题目描述 $x$
小红拿到了一个数组,初始数组为空,她希望你实现以下两种操作:
1. 翰入 $1 x y$ ,将 $x$ 插入在元素 $y$ 的右边。保证此时数组中没有元素等于 $x$ ,且数组中存在一个 $y$ 。特殊的,如果将 $x$ 插入在数组的最左边,则 $y=0$
2. 输入 $2 x$ ,将元素 $x$ 删除。
请你在所有操作后输出整个数组。
https://ac.nowcoder.com/acm/contest/74362/D
程序发生了段错误,应该怎么修改 #include <iostream>
#include <list>
using namespace std;
#define ll long long
list<ll> l;
list<ll>::iterator it, tempit;
void solve()
{
ll q, x, y, p;
cin >> q;
while (q--)
{
cin >> p;
if (p == 1)
{
cin >> x >> y;
if (y != 0)
{
if (l.empty())
{
l.push_front(y);
it = l.begin();
}
if (it == l.end())
{
l.push_back(x);
it = --l.end();
}
else
{
tempit = it;
tempit++;
it = l.insert(tempit, x);
}
}
else
{
l.push_front(x);
it = l.begin();
}
}
else
{
cin >> x;
if (it != l.end())
{
if (*it == x)
{
l.erase(it);
it = l.end();
}
}
}
}
for (auto num : l)
{
cout << num << " ";
}
cout << endl;
}
int main()
{
solve();
return 0;
}
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]