순차구조의 단점에 대한 좋은 해결책은 없을까요?
오늘 소개할 선형 리스트의 연결 저장 구조는 순차 구조의 단점을 매우 잘 해결할 수 있습니다. 함께 살펴보겠습니다.
체인 저장 구조, 링크 저장 구조라고도 합니다. 컴퓨터에서는 임의의 저장 단위 집합을 사용하여 선형 테이블의 데이터 요소를 저장합니다(이 저장 단위 집합은 연속적이거나 불연속적일 수 있음).
기본 소개
로직이 필요하지 않습니다. 인접한 요소도 물리적인 위치에서 인접해 있기 때문에 순차 저장 구조의 약점은 없지만 순차 목록에서 임의 접근의 장점도 상실합니다.
특징
1. 저장 구조 저장 밀도가 작습니다(체인 저장 구조의 각 노드는 데이터 필드와 포인터 필드의 두 부분으로 구성되어 순차 저장 구조에 비해 저장 공간이 늘어납니다).
2. 논리적으로 인접한 노드는 물리적으로 인접할 필요는 없습니다.
3. 유연한 삽입 및 삭제(노드를 이동할 필요 없이 노드의 포인터만 변경하면 됩니다).
4. 체인 스토리지는 노드 검색 시 순차 스토리지보다 속도가 느립니다.
5. 각 노드는 데이터 필드와 포인터 필드로 구성됩니다.
6. 클러스터가 무작위로 할당되기 때문에 데이터 삭제 후 덮어쓸 확률도 줄어들고 복구 가능성도 높아집니다.
추천 과정: C 언어 튜토리얼.
선형 목록의 마지막 요소에는 직접적인 후속 요소가 없으므로 연결 저장소에서는 마지막 노드의 포인터 필드를 null로 설정했습니다.
단일 연결 목록의 구체적인 코드 구현을 살펴보겠습니다
typedef struct LNode{ ElemType data; //数据域 struct LNode *next; //指针域,用来指向本节点的直接后继 }LNode,*LinkList; //定义节点,以及头指针
많은 학생들이 헤드 포인터, 헤드 노드, 첫 번째 노드의 관계와 차이점을 구분하지 못합니다. 아래에서 간단히 구분해 보겠습니다.
헤드 포인터: 링크드 리스트에 대한 포인터입니다. 링크드 리스트에 헤드 노드가 있으면 헤드 노드를 가리킵니다.
헤드 노드: 첫 번째 노드 이전의 보조 노드이며 다음 노드를 가리킵니다. 첫 번째 노드를 클릭합니다. 이는 데이터 변수가 첫 번째 데이터를 저장하고 다음 포인터 변수가 두 번째 노드를 가리킵니다. 연결리스트. 그런데 헤드 노드는 그렇지 않은데, 헤드 노드의 존재 의미는 무엇일까요?
개인적으로는 첫 번째 노드의 삽입 및 삭제 작업이 후속 노드의 작업과 일치하도록 해야 한다는 것입니다. 그렇지 않으면 첫 번째 노드를 수정할 때 헤드 포인터를 수정해야 합니다.
헤드 노드가 없으면 헤드 포인터는 첫 번째 노드를 직접 가리킵니다.
위 내용은 선형 테이블의 연계형 저장 구조의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!