티스토리 뷰
이중 연결 리스트
- 이중 연결 리스트를 처음으로 직접 구현해서 풀었다.
- 삼성 B형을 대비해서 구현 연습을 계속 해야겠다.
- 끝에 널문자를 출력해서 계속 오답이였다.....
풀이
1. 커서를 좌, 우로 이동하므로 이중 연결 리스트를 구현한다.
2. head와 tail에 유의하여 문제 조건에 맞게 함수를 구현한다.
3. 널문자를 출력하지 않도록 조심한다.
소스 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <iostream> #include <string> #define sws ios::sync_with_stdio(false), cin.tie(NULL) using namespace std; struct node{ char data; node *next, *prev; }; node *head = (node*)malloc(sizeof(node)); node *tail = (node*)malloc(sizeof(node)); void init() { head->data = NULL; head->prev = NULL; head->next = tail; tail->data = NULL; tail->prev = head; tail->next = NULL; } void add(node *cur, char data) { node *newNode = (node*)malloc(sizeof(node)); cur->prev->next = newNode; newNode->data = data; newNode->next = cur; newNode->prev = cur->prev; cur->prev = newNode; } void del(node *cur) { cur->prev->prev->next = cur; node *tmp = cur->prev; cur->prev = cur->prev->prev; free(tmp); } int main() { sws; init(); int N; char cmd, x; string s; cin >> s; for (char c : s) add(tail, c); cin >> N; node *cur = tail; while (N--) { cin >> cmd; switch (cmd) { case 'L': if(cur != head->next) cur = cur->prev; break; case 'D': if (cur != tail) cur = cur->next; break; case 'B': if (cur != head->next) del(cur); break; case 'P': cin >> x; add(cur, x); break; default: break; } } cur = head->next; while (cur != tail) { cout << cur->data; cur = cur->next; } } | cs |
반응형
'백준 온라인 저지' 카테고리의 다른 글
190305 BOJ 9370번 미확인 도착지 (0) | 2019.03.05 |
---|---|
190301 BOJ 16985번 Maaaaaaaaaze (0) | 2019.03.02 |
190217 BOJ 14500번 테트로미노 (0) | 2019.02.17 |
190217 BOJ 1208번 부분집합의 합 2 (0) | 2019.02.17 |
190215 BOJ 16940번 BFS 스페셜 저지 (0) | 2019.02.15 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 올인원 패키지
- 코딩 면접
- 개발자 취업
- 패스트캠퍼스
- 컴퓨터공학
- Fast Campus
- 운영체제
- #패스트캠퍼스 #프로그래밍대학생서포터즈 #올인원패키지 #컴퓨터공학 #성공하는프로그래밍공부법
- 프로그래밍 온라인 강의
- 자료구조
- c언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함