https://www.acmicpc.net/problem/1406
* 연결리스트
장점 : 삽입이 O(1) 이다.
단점 : 조회가 O(N)이다.
사용처 : 메모장 구현 등 삽입,삭제가 빈번할 때
코테키워드 : 메모장, 커서
*메소드
L.insert(idx,값) // 삽입한놈 idx 반환
L.erase(idx) // 삭제한 다음놈 idx 반환
L.end() // 마지막원소 다음 idx 반환
#include<bits/stdc++.h>
using namespace std;
string s;
int m;
list<char> L;
int main() {
cin >> s;
for (int i = 0; i < s.size(); ++i) {
L.push_back(s[i]);
}
auto now = L.end();
//cout << *now;
cin >> m;
while (m--) {
char op;
cin >> op;
if (op == 'P') {
char c;
cin >> c;
L.insert(now, c); //삽입한놈 idx 반환
}
else if (op == 'L') {
if (now == L.begin()) continue;
now--;
}
else if (op == 'D') {
if (now == L.end()) continue;
now++;
}
else if (op == 'B') {
if (now == L.begin()) continue;
now--;
now=L.erase(now); //삭제한놈 다음 idx 반환
}
}
for (auto i : L) {
cout << i;
}
}
'Algorithm > 연결리스트' 카테고리의 다른 글
[알고리즘] 리트코드 19. 리스트 끝에서 N번째 노드 제거 c++ // 노드탐색 (0) | 2024.07.02 |
---|---|
리트코드 2. 두개의숫자추가 c++ // stoi 주의점, 노드 begin 저장방법, 두 링크드리스트 덧셈방법 (0) | 2024.06.20 |
프로그래머스 표편집 c++ // 연결리스트 직접구현 하는방법, 삽입삭제 되돌리기는 연결리스트(직접구현)! (0) | 2023.11.23 |
백준 1158 cpp // 연결리스트 풀이, int_to_string(int), List.erase() 주의사항 (0) | 2023.08.16 |
백준 5397 cpp// 연결리스트 메모장 (0) | 2023.08.14 |