-
04 연결리스트(1)Algorithm 2022. 1. 6. 17:05
#include <bits/stdc++.h> using namespace std; const int MX = 1000005; int dat[MX], pre[MX], nxt[MX]; int unused = 1; void insert(int addr, int num) { //insert(1,30) dat[unused] = num; pre[unused] = addr; nxt[unused] = nxt[addr]; int next = nxt[addr]; if(next !=-1) pre[next] = unused; nxt[addr] = unused; unused++; } void erase(int addr) { int pre_addr = pre[addr]; int nxt_addr = nxt[addr]; nxt[pre_addr] = nxt_addr; if(nxt_addr!=-1)pre[nxt_addr] = pre_addr; } void traverse() { int cur = nxt[0]; while (cur != -1) { cout << dat[cur] << ' '; cur = nxt[cur]; } cout << "\n\n"; } void insert_test() { cout << "****** insert_test *****\n"; insert(0, 10); // 10(address=1) traverse(); insert(0, 30); // 30(address=2) 10 traverse(); insert(2, 40); // 30 40(address=3) 10 traverse(); insert(1, 20); // 30 40 10 20(address=4) traverse(); insert(4, 70); // 30 40 10 20 70(address=5) traverse(); } void erase_test() { cout << "****** erase_test *****\n"; erase(1); // 30 40 20 70 traverse(); erase(2); // 40 20 70 traverse(); erase(4); // 40 70 traverse(); erase(5); // 40 traverse(); } int main(void) { fill(pre, pre + MX, -1); fill(nxt, nxt + MX, -1); insert_test(); erase_test(); }
야매리스트로 insert() 메소드, erase() 메소드 구현
출처:GitHub - encrypted-def/basic-algo-lecture: 바킹독의 실전 알고리즘 강의 자료
'Algorithm' 카테고리의 다른 글
[코딩테스트] 분할과 정복(하노이탑/영역구분/트로미노 문제) (0) 2023.10.26 [코딩테스트] 수학적 귀납법 (분할과 정복) (1) 2023.10.23 04 연결리스트(2) - 백준 1406 에디터 (0) 2022.01.06 01 시간복잡도 (0) 2021.12.29 03 배열 (0) 2021.12.29