단방향 링크드 리스트

Kaia·2023년 9월 22일
post-thumbnail

💡 이전 게시물 실행 컨텍스트의 단방향 링크드 리스트에 대한 부가 내용이다.


ABC(root)
노드A주소: 200
값: 10
다음주소: 208
노드B주소: 208
값: 20
다음주소: 216
노드C주소: 216
값: 15
다음주소: null

다음 노드를 가리키는 포인터를 가지고 있다.

포인터는 메모리주소를 값으로 가리키는 역할이다. 메모리주소 자체가 아님

배열(Array)과의 차이점은?

  1. 연결 리스트는 일련의 원소를 배열처럼 차례대로 저장하지만, 원소들이 메모리상에 연속적으로 위치하지 않는다는 점이 다르다.
  2. 연결 리스트는 배열과 달리 원소를 추가/삭제할 때 다른 원소들을 이동하지 않아도 된다.

메모리주소 대신 포인터를 사용하는 이유?

  1. 추상화와 모듈화: 포인터를 사용하면 메모리 주소값을 직접 다루지 않고도 데이터의 위치를 추상화하여 프로그래밍할 수 있습니다. 이로써 코드의 가독성이 향상되고 유지보수가 쉬워집니다.
  2. 유연성과 동적 할당: 포인터를 사용하면 메모리를 동적으로 할당하고 해제할 수 있습니다. 이는 프로그램 실행 중에 필요한 만큼의 메모리를 할당하고 해제할 수 있는 유연성을 제공합니다.
  3. 자료구조와 데이터 연결: 포인터를 이용하면 자료구조를 구현할 때 데이터들 간의 관계를 간단하게 연결할 수 있습니다. 예를 들어, 연결 리스트나 트리 구조에서 각 노드들은 다음 노드를 가리키는 포인터를 사용하여 서로 연결됩니다.
  4. 메모리 접근 최적화: 포인터를 사용하면 메모리에 더 효율적으로 접근할 수 있습니다. 포인터를 사용하여 데이터의 주소를 직접 지정하거나 조작함으로써 복잡한 메모리 연산을 최적화할 수 있습니다.
  5. 동적 데이터 구조 관리: 동적으로 크기가 바뀌는 데이터 구조를 관리할 때 포인터를 사용하면 메모리 사용을 효율적으로 조절할 수 있습니다.
  6. 데이터 공유와 효율성: 여러 변수가 같은 데이터를 공유해야 할 때 포인터를 사용하면 데이터 복사를 방지하고 메모리 사용량을 최적화할 수 있습니다.
  7. 저장 공간 최적화: 포인터를 사용하면 데이터를 효율적으로 저장할 수 있습니다. 예를 들어, 배열보다 연결 리스트를 사용하여 메모리를 더 효율적으로 사용할 수 있습니다.

0개의 댓글