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