링크드 리스트야 워낙 흔하게 쓰이는 것이라 그렇게 놀라웠던 건 없었다. 하지만 알고리즘 대회 용으로 배운 메모리풀 방식은 인상깊었다. 구조체를 미리 정적배열로 할당을 해준후 필요할때마다 하나씩 꺼내서 사용하는 식이다. 간단하게
struct Node {
int data;
Node* next;
};
Node node[MAX_NODE];
위와 같이 선언을 해준다면 새 노드를 추가 할때마다 동적할당을 통하여 할당해주는 것이 아닌 이미 할당이 되어있는 빈 노드들 중에서 하나를 가져와서 쓰는 것이다. 동적할당 한것 마냥 똑같이 data를 넣어주고 next값으로 다음 노드를 포인팅하게 초기화를 진행해주면 된다. 이렇게 진행하면 매번 동적할당을 할 필요없이 간단하고 빠르게 바로 새 노드를 가져올 수 있는 것이다. 하지만 실생활에서는 그렇게 유용하진 않다. 총 몇개의 새로운 노드를 만들어야하는지 그 최대 개수를 알고 있을 경우에는 유용하지만 실생활에서는 모르기 때문에 알고리즘 대회용으로 좋은 아이디어인 것 같다.
'코딩' 카테고리의 다른 글
[BOJ 11003] 최솟값 찾기 (0) | 2022.02.04 |
---|---|
[BOJ 1655] 가운데를 말해요 (0) | 2022.02.04 |
[SWEA 1일차] Bitmap (2) | 2022.01.18 |
[BOJ] 2749 (2) | 2022.01.15 |
[BOJ13430] 합구하기 (1) | 2022.01.09 |