C - Doubly Linked List

cpaojalds1

最終更新日

問題

https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/3/ALDS1_3_C (新しいタブで開く)

問題文

以下のクエリを処理する双方向連結リストを実装してね。

制約

サンプル

I/O 1

7
insert 5
insert 2
insert 3
insert 1
delete 3
insert 6
delete 5
6 1 2

考察

双方向連結リスト...は作らず deque で代用。。

コード

https://onlinejudge.u-aizu.ac.jp/status/users/a01sa01to/submissions/1/ALDS1_3_C/judge/6746044/C++17 (新しいタブで開く)

int main() {
  deque<int> dq;
  int n;
  cin >> n;
  while (n--) {
    string s;
    cin >> s;
    if (s == "insert") {
      int x;
      cin >> x;
      dq.push_front(x);
    }
    else if (s == "delete") {
      int x;
      cin >> x;
      rep(i, dq.size()) {
        if (dq[i] == x) {
          dq.erase(dq.begin() + i);
          break;
        }
      }
    }
    else if (s == "deleteFirst") {
      dq.pop_front();
    }
    else {
      dq.pop_back();
    }
    Debug(dq);
  }
  rep(i, dq.size()) {
    cout << dq[i] << (i == dq.size() - 1 ? "\n" : " ");
  }
  return 0;
}