💡 이전 게시물 실행 컨텍스트의 단방향 링크드 리스트에 대한 부가 내용이다.
| A | B | C(root) |
|---|
노드A주소: 200 값: 10 다음주소: 208 | 노드B주소: 208 값: 20 다음주소: 216 | 노드C주소: 216 값: 15 다음주소: null |
다음 노드를 가리키는 포인터를 가지고 있다.
포인터는 메모리주소를 값으로 가리키는 역할이다. 메모리주소 자체가 아님
배열(Array)과의 차이점은?
- 연결 리스트는 일련의 원소를 배열처럼 차례대로 저장하지만, 원소들이 메모리상에 연속적으로 위치하지 않는다는 점이 다르다.
- 연결 리스트는 배열과 달리 원소를 추가/삭제할 때 다른 원소들을 이동하지 않아도 된다.
메모리주소 대신 포인터를 사용하는 이유?
- 추상화와 모듈화: 포인터를 사용하면 메모리 주소값을 직접 다루지 않고도 데이터의 위치를 추상화하여 프로그래밍할 수 있습니다. 이로써 코드의 가독성이 향상되고 유지보수가 쉬워집니다.
- 유연성과 동적 할당: 포인터를 사용하면 메모리를 동적으로 할당하고 해제할 수 있습니다. 이는 프로그램 실행 중에 필요한 만큼의 메모리를 할당하고 해제할 수 있는 유연성을 제공합니다.
- 자료구조와 데이터 연결: 포인터를 이용하면 자료구조를 구현할 때 데이터들 간의 관계를 간단하게 연결할 수 있습니다. 예를 들어, 연결 리스트나 트리 구조에서 각 노드들은 다음 노드를 가리키는 포인터를 사용하여 서로 연결됩니다.
- 메모리 접근 최적화: 포인터를 사용하면 메모리에 더 효율적으로 접근할 수 있습니다. 포인터를 사용하여 데이터의 주소를 직접 지정하거나 조작함으로써 복잡한 메모리 연산을 최적화할 수 있습니다.
- 동적 데이터 구조 관리: 동적으로 크기가 바뀌는 데이터 구조를 관리할 때 포인터를 사용하면 메모리 사용을 효율적으로 조절할 수 있습니다.
- 데이터 공유와 효율성: 여러 변수가 같은 데이터를 공유해야 할 때 포인터를 사용하면 데이터 복사를 방지하고 메모리 사용량을 최적화할 수 있습니다.
- 저장 공간 최적화: 포인터를 사용하면 데이터를 효율적으로 저장할 수 있습니다. 예를 들어, 배열보다 연결 리스트를 사용하여 메모리를 더 효율적으로 사용할 수 있습니다.