연결된 목록은 어떤 저장 구조에 저장된 선형 목록입니다.
연결된 목록은 "체인으로 연결된" 저장 구조에 저장된 선형 목록입니다. 연결 리스트의 데이터 요소가 차지하는 저장 단위 주소는 연속적이거나 불연속적일 수 있으며, 해당 저장 공간은 필요에 따라 일시적으로 동적으로 할당될 수 있습니다. 데이터 요소 간의 논리적 관계는 "체인"으로 표현될 수 있습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.
순차 테이블 저장 구조의 단점을 극복하고 저장 공간을 최대한 활용하며 운영 효율성을 향상시키기 위해 선형 테이블은 또 다른 저장 구조인 체인 저장 구조를 사용할 수 있습니다. 선형 목록의 연결된 저장 구조를 "링크 목록"이라고 합니다
1. 연결 목록 개요
연결 목록의 데이터 요소가 차지하는 저장 단위 주소는 필요에 따라 연속적이거나 불연속적일 수 있습니다. 해당 저장 공간의 할당을 일시적이고 동적으로 적용하며, 데이터 요소 간의 논리적 관계는 "체인"으로 표현될 수 있습니다.
연결된 목록의 삽입 및 삭제에는 데이터 요소 이동이 필요하지 않으며 체인만 수정하면 됩니다.
연결리스트 분류:
1. 연결리스트 메모리 할당 방식에 따라 분류
1 동적 연결 리스트
② 정적 연결 리스트
1 연결 방식에 따라 분류
1 단일 연결 리스트
② 순환 연결 리스트
3 이중 연결 리스트
(모두 동적 연결 리스트임)
2. 단일 연결 리스트의 정의
1. 정의
각 데이터 요소 ai와 그 직접적인 후속 요소 간의 논리적 관계를 표현하기 위해 데이터 요소 ai+1, 각 데이터 요소에 대해 자신의 정보를 저장하는 것 외에도 ai는 직계 후임자(후임자의 저장 위치 - 주소)를 나타내는 정보 를 저장하기 위해 도 필요합니다.
데이터 요소 정보를 저장하는 필드를 데이터 필드라고 하며, 직접적인 후속 위치를 저장하는 필드를 포인터 필드라고 합니다. 포인터 필드에 저장되는 정보를 포인터 또는 체인이라고 합니다.
이 두 부분의 정보는 node라고 불리는 데이터 요소 ai의 저장 이미지를 구성합니다.
n개의 노드는 선형 목록(a1, a2, a3,...,an)의 연결 저장 구조인 연결 목록에 연결됩니다. 연결 목록의 각 노드에는 하나의 포인터 필드만 포함되기 때문입니다. 이라는 싱글 링크드 리스트 입니다.
선형 목록에는 항상 머리와 꼬리가 있으며 연결 목록도 예외는 아닙니다. 연결된 목록에 있는 단일 연결 목록의 첫 번째 노드에 대한 포인터를 헤드 포인터라고 합니다. 전체 연결 목록에 대한 액세스는 헤드 포인터에서 시작해야 하며 각 후속 노드는 후속 노드가 가리킵니다. 이전 노드 위치의 포인터입니다. 연결된 목록의 마지막 노드에 대한 포인터는 "null(보통 NULL로 표시됨)", 즉 널 포인터입니다.
연결된 목록에서 다양한 작업을 쉽게 구현하기 위해 단일 연결 목록의 첫 번째 데이터 노드 앞에 동일한 유형의 노드가 설정됩니다. 이 노드를 헤드 노드라고 합니다.
헤드 노드의 데이터 필드에는 연결 목록의 길이와 같은 특수 플래그 정보를 저장할 수 있거나 데이터를 저장할 수 없습니다.
링크드 리스트의 첫 번째 데이터 노드와 마지막 노드를 헤드 노드 및 테일 노드라고도 합니다.
2. 헤드 포인터와 헤드 노드의 유사점과 차이점
헤드 포인터:
- 헤드 포인터는 연결된 목록에 있는 첫 번째 노드를 가리키는 포인터를 나타냅니다. 헤드 노드, 이는 헤드 노드를 가리키는 포인터입니다.
- 헤드 포인터에는 식별 기능이 있으며, 헤드 포인터는 연결 리스트의 이름으로 자주 사용됩니다.
- 링크드 리스트가 비어 있든 없든 헤드 포인터는 비어 있지 않습니다. 헤드 포인터는 연결 리스트의 필수 요소입니다.
헤더 노드:
- 헤드 노드는 작업의 통일성과 편의를 위해 설정되며 첫 번째 요소의 노드 앞에 배치되며 해당 데이터 필드는 일반적으로 의도되지 않습니다.
- 헤드 노드를 사용하면 첫 번째 요소 노드 앞에 노드를 삽입하고 첫 번째 노드를 삭제하는 작업이 다른 노드의 작업과 통합됩니다.
- 헤드 노드가 반드시 연결 리스트의 필수 요소는 아닙니다.
3. 코드 데모
/*线性表的单链表存储结构*/ /*结点定义*/ typedef struct Node { ElemType data; struct Node *next; }Node; /*单链表定义*/ typedef struct Node *LinkList;
3. 단일 연결 리스트의 연산
1. 삽입 연산
1) 삽입 시뮬레이션
요소 e를 저장하는 노드가 s라고 가정하고 ai 노드 뒤에 s를 삽입합니다.
생각하기: 삽입 코드의 두 문장을 바꿀 수 있나요?
아니요, 전환하면 s의 포인터 필드가 ai+1의 주소를 가리키지 않기 때문에 ai+1과 같은 후속 요소를 찾을 수 없습니다.
2) 단일 연결 리스트의 노드에 i번째 데이터를 삽입하는 알고리즘 아이디어
- 노드 p가 연결 리스트의 첫 번째 노드를 가리키도록 선언하고 j=1;
- j
- 연결된 목록의 끝에서 p가 비어 있으면 i번째 요소가 존재하지 않는다는 의미입니다. 검색이 성공하면 빈 노드 s가 생성됩니다(malloc 함수 사용)
- 데이터 요소 e를 s->data에 할당합니다. 즉, s->data=e;
- 에 대한 표준 문을 삽입합니다. s->next=p->next; p->next=s;
- 반품에 성공했습니다.
2. 삭제 연산
1) 삭제 시뮬레이션
요소 ai를 저장한 노드가 q이고, 단일 연결 리스트에서 노드 q를 삭제하는 연산을 구현한다고 가정합니다.
2) 단일 연결 리스트에서 i번째 데이터 노드를 삭제하는 알고리즘 아이디어
- 연결 리스트의 첫 번째 노드를 가리키는 노드 p를 선언하고, j=1;
- j<일 때 초기화합니다. ;i, traverse 연결된 리스트에서 p의 포인터가 뒤로 이동하여 계속해서 다음 노드인 j++를 가리키도록 합니다.
- 연결된 리스트의 끝에서 p가 비어 있으면 i번째 요소가 비어 있다는 의미입니다. 검색이 성공하면 노드 p-> q
- 다음에 할당합니다. 표준 문을 삽입합니다. p->next=q->next;
- q 노드를 e=로 할당합니다. q->data;
- q 노드를 해제하세요
- 성공을 반환합니다.
4. 단일 연결 리스트 구조와 순차 리스트 구조 비교
저장 방법:
- 순차 테이블은 연속 저장 장치를 사용하여 선형 리스트의 데이터 요소를 순차적으로 저장합니다.
- 단일 연결 리스트는 연결 저장 장치를 사용합니다. 임의의 저장 단위 그룹을 사용하여 선형 테이블 요소를 저장하는 구조
시간 성능:
①Lookup
- Sequential table O(1)
- Singly linked list O(n)
②삽입 및 삭제
- Sequential 테이블 O(n)
- 단일 연결 리스트 O(1)
공간 성능:
- 시퀀스 테이블은 미리 할당된 저장 공간이 필요하므로 크게 분할하면 낭비가 됩니다.
- 단일 연결 리스트는 미리 저장 공간을 할당할 필요가 없으며, 필요한 만큼 할당할 수 있으며, 요소 수에는 제한이 없습니다.
자세한 내용은 지식, FAQ 칼럼을 방문해 보세요!
위 내용은 연결된 목록은 어떤 저장 구조에 저장된 선형 목록입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linuxext2 파일 시스템은 대부분의 Linux 운영 체제에서 사용되는 파일 시스템으로 효율적인 디스크 저장 구조를 사용하여 파일 및 디렉터리 저장을 관리합니다. Linuxext2 파일 시스템의 물리적 저장 구조를 살펴보기 전에 먼저 몇 가지 기본 개념을 이해해야 합니다. ext2 파일 시스템에서 데이터는 파일 시스템에서 할당 가능한 가장 작은 단위인 데이터 블록(블록)에 저장됩니다. 각 데이터 블록은 고정된 크기(보통 1KB, 2KB 또는 4개)를 갖습니다.

단일 연결 리스트와 양의 정수 N이 입력으로 제공됩니다. 목표는 재귀를 사용하여 주어진 목록의 끝에서 N번째 노드를 찾는 것입니다. 입력 목록에 노드 a→b→c→d→e→f가 있고 N이 4인 경우 마지막에서 4번째 노드는 c가 됩니다. 먼저 목록의 마지막 노드까지 순회하고 재귀(역추적) 증분 카운트에서 돌아올 때 이동합니다. count가 N과 같으면 현재 노드에 대한 포인터가 결과로 반환됩니다. 이에 대한 다양한 입력 및 출력 시나리오를 살펴보겠습니다. - 입력 - 목록: -1→5→7→12→2→96→33N=3 출력 − 마지막에서 N 번째 노드는 2 입니다. 설명 − 세 번째 노드는 2 입니다. 입력 – 목록: -12→53→8→19→20→96→33N=8 출력 – 노드가 존재하지 않습니다.

PHPSPL 데이터 구조 라이브러리 개요 PHPSPL(표준 PHP 라이브러리) 데이터 구조 라이브러리에는 다양한 데이터 구조를 저장하고 조작하기 위한 클래스 및 인터페이스 세트가 포함되어 있습니다. 이러한 데이터 구조에는 배열, 연결된 목록, 스택, 큐 및 세트가 포함되며, 각 항목은 데이터 조작을 위한 특정 메서드 및 속성 세트를 제공합니다. 배열 PHP에서 배열은 일련의 요소를 저장하는 정렬된 컬렉션입니다. SPL 배열 클래스는 정렬, 필터링 및 매핑을 포함하여 기본 PHP 배열에 대한 향상된 기능을 제공합니다. 다음은 SPL 배열 클래스를 사용하는 예입니다: useSplArrayObject;$array=newArrayObject(["foo","bar","baz"]);$array

배열과 연결 목록의 알고리즘 시간 복잡도 비교: 배열 액세스 O(1), 연결 목록 O(n), 배열 삽입 O(1), 연결 목록 O(1)/O(n); ), 연결된 리스트 O(n) (n), 검색 배열 O(n), 연결된 리스트 O(n).

숫자의 연결 목록 표현은 다음과 같이 제공됩니다. 연결 목록의 모든 노드는 숫자의 한 자리로 간주됩니다. 노드는 연결된 목록의 첫 번째 요소에 숫자의 가장 중요한 숫자가 포함되고, 연결된 목록의 마지막 요소에 해당 숫자의 최하위 숫자가 포함되도록 숫자를 저장합니다. 예를 들어 숫자 202345는 연결된 목록에서 (2->0->2->3->4->5)로 표시됩니다. 숫자를 나타내는 이 연결 리스트에 1을 더하려면 리스트에서 최하위 비트의 값을 확인해야 합니다. 9보다 작으면 괜찮습니다. 그렇지 않으면 코드가 다음 숫자 등을 변경합니다. 이제 이를 수행하는 방법을 이해하기 위한 예를 살펴보겠습니다. 1999는 (1->9->9->9)로 표시되며 1을 추가하면 변경됩니다.

연결된 목록은 요소를 구성하기 위해 데이터와 포인터가 있는 일련의 노드를 사용하는 데이터 구조이며, 특히 대규모 데이터 세트 및 빈번한 삽입/삭제 작업을 처리하는 데 적합합니다. 기본 구성 요소에는 노드(데이터 및 다음 노드에 대한 포인터)와 헤드 노드(연결된 목록의 첫 번째 노드를 가리키는)가 포함됩니다. 일반적인 연결 목록 작업에는 추가(꼬리 삽입), 삭제(특정 값) 및 순회가 포함됩니다.

Python에서 연결 목록은 일련의 노드로 구성된 선형 데이터 구조이며, 각 노드에는 연결 목록의 다음 노드에 대한 참조와 값이 포함되어 있습니다. 이번 글에서는 Python에서 연결리스트의 첫 번째 위치와 마지막 위치에 요소를 추가하는 방법에 대해 설명합니다. Python의 LinkedList 연결된 목록은 요소 집합을 저장하는 데 사용되는 참조 데이터 구조입니다. 어떤 면에서는 배열과 비슷하지만 배열에서는 데이터가 인접한 메모리 위치에 저장되는 반면, 연결 목록에서는 데이터가 이 조건의 적용을 받지 않습니다. 이는 데이터가 순차적으로 저장되지 않고 무작위 방식으로 메모리에 저장됨을 의미합니다. 이것은 한 가지 질문을 제기합니다. 우리는 어떻게 할 수 있습니까?

LinkedList는 일련의 노드로 구성된 공통 데이터 구조입니다. 각 노드에는 데이터 필드(Data)와 포인터 필드(Next)라는 두 가지 주요 속성이 포함되어 있습니다. 그 중 데이터 필드는 실제 데이터를 저장하는 데 사용되고 포인터 필드는 다음 노드를 가리키는 데 사용됩니다. 이러한 방식으로 연결된 목록은 다양한 애플리케이션 시나리오에 적합한 유연한 방식으로 데이터를 저장합니다. Go 언어에서는 연결리스트 구조도 잘 지원됩니다. Cont는 Go에 내장된 표준 라이브러리에서 제공됩니다.