>일반적인 문제 >선형 테이블의 연계형 저장 구조

선형 테이블의 연계형 저장 구조

(*-*)浩
(*-*)浩원래의
2019-06-04 09:40:2613020검색

순차구조의 단점에 대한 좋은 해결책은 없을까요?

오늘 소개할 선형 리스트의 연결 저장 구조는 순차 구조의 단점을 매우 잘 해결할 수 있습니다. 함께 살펴보겠습니다.

체인 저장 구조, 링크 저장 구조라고도 합니다. 컴퓨터에서는 임의의 저장 단위 집합을 사용하여 선형 테이블의 데이터 요소를 저장합니다(이 저장 단위 집합은 연속적이거나 불연속적일 수 있음).

선형 테이블의 연계형 저장 구조

기본 소개

로직이 필요하지 않습니다. 인접한 요소도 물리적인 위치에서 인접해 있기 때문에 순차 저장 구조의 약점은 없지만 순차 목록에서 임의 접근의 장점도 상실합니다.

특징

1. 저장 구조 저장 밀도가 작습니다(체인 저장 구조의 각 노드는 데이터 필드와 포인터 필드의 두 부분으로 구성되어 순차 저장 구조에 비해 저장 공간이 늘어납니다).

2. 논리적으로 인접한 노드는 물리적으로 인접할 필요는 없습니다.

3. 유연한 삽입 및 삭제(노드를 이동할 필요 없이 노드의 포인터만 변경하면 됩니다).

4. 체인 스토리지는 노드 검색 시 순차 스토리지보다 속도가 느립니다.

5. 각 노드는 데이터 필드와 포인터 필드로 구성됩니다.

6. 클러스터가 무작위로 할당되기 때문에 데이터 삭제 후 덮어쓸 확률도 줄어들고 복구 가능성도 높아집니다.

추천 과정: C 언어 튜토리얼.

선형 목록의 마지막 요소에는 직접적인 후속 요소가 없으므로 연결 저장소에서는 마지막 노드의 포인터 필드를 null로 설정했습니다.

단일 연결 목록의 구체적인 코드 구현을 살펴보겠습니다

typedef struct LNode{     
    ElemType data;          //数据域    
    struct LNode *next;     //指针域,用来指向本节点的直接后继
 }LNode,*LinkList;           //定义节点,以及头指针

많은 학생들이 헤드 포인터, 헤드 노드, 첫 번째 노드의 관계와 차이점을 구분하지 못합니다. 아래에서 간단히 구분해 보겠습니다.

헤드 포인터: 링크드 리스트에 대한 포인터입니다. 링크드 리스트에 헤드 노드가 있으면 헤드 노드를 가리킵니다.

헤드 노드: 첫 번째 노드 이전의 보조 노드이며 다음 노드를 가리킵니다. 첫 번째 노드를 클릭합니다. 이는 데이터 변수가 첫 번째 데이터를 저장하고 다음 포인터 변수가 두 번째 노드를 가리킵니다. 연결리스트. 그런데 헤드 노드는 그렇지 않은데, 헤드 노드의 존재 의미는 무엇일까요?

개인적으로는 첫 번째 노드의 삽입 및 삭제 작업이 후속 노드의 작업과 일치하도록 해야 한다는 것입니다. 그렇지 않으면 첫 번째 노드를 수정할 때 헤드 포인터를 수정해야 합니다.

헤드 노드가 없으면 헤드 포인터는 첫 번째 노드를 직접 가리킵니다. 선형 테이블의 연계형 저장 구조

위 내용은 선형 테이블의 연계형 저장 구조의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.