전단 알고리즘 학습 (一) --- 선형 데이터 구조
특성:
1. 물리 적 공간 에 연속 저장
2. 밑 에 있 는 배열 의 길 이 는 가 변 적 이지 않 습 니 다. js 에서 배열 의 길 이 를 바 꾸 면 성능 이 많이 소 모 됩 니 다.
3. 배열 의 변 수 는 배열 의 첫 번 째 요소 의 위치 (메모리 공간의 주소) 를 가리킨다.
장점: 조회 성능 이 좋다.어떤 위 치 를 조회 할 지 지정 합 니 다.
단점:
1. 공간 은 반드시 연속 되 어야 하기 때문에 배열 이 비교적 크 면 시스템 의 공간 파편 이 비교적 많 을 때 저장 하지 못 하기 쉽다.
2. 배열 의 길이 가 고정 되 어 있 기 때문에 배열 의 내용 을 추가 하고 삭제 하기 어렵다.
주의:
배열 a = [1, 2, 3, 4] 에서 a [0], a [1], a [2] 의 괄호 는 저장 주소 의 오프셋 을 나타 내 고 오프셋 을 통 해 데이터 성능 을 조회 하 는 것 이 가장 좋다.
var a = [1,2,3,4]; //
var b = new Array(10); // ,
체인 테이블
특성:
1. 공간 적 으로 연속 이 아니다
2. 값 을 저장 할 때마다 인용 공간 을 하나 더 써 야 합 니 다.
장점:
1. 메모리 만 충분 하면 저장 할 수 있 으 니 공간 파편 문 제 는 걱정 하지 마 세 요.
2. 링크 의 추가 와 삭제 가 매우 쉽다
단점:
1. 조회 속도 가 느리다 (위치 조회)
2. 링크 의 모든 노드 는 종이 상자 next 의 인용 을 만 들 고 공간 을 낭비 해 야 합 니 다. 노드 안의 데이터 가 많 을 수록 이 부분 은 많이 사용 하 는 메모리 의 영향 이 적 습 니 다.
function Node(value) {
this.value = value;
this.next = null;
}
var a = new Node(1);
var b = new Node(2);
var c = new Node(3);
a.next = b;
b.next = c;
반복 되 지 않 음
//
var arr = [1, 2, 3, 4];
function iterator(arr) {
if (arr == null) return;
for (var i = 0; i < arr.length; i++) {
console.log(arr[i])
}
}
iterator(arr);
//
function Node(value) {
this.value = value;
this.next = null;
}
var a = new Node(1);
var b = new Node(2);
var c = new Node(3);
var d = new Node(4);
a.next = b;
b.next = c;
c.next = d;
function iterator2(head) {
var temp = head;
while (true) {
if (temp != null) {
console.log(temp.value);
} else {
break;
}
temp = temp.next;
}
}
iterator2(a);
차례로 옮 겨 다니다.
//
var arr = [1, 2, 3, 4];
function iterator(arr, i) {
if (arr == null || arr.length <= i) return;
console.log(arr[i]);
iterator(arr, i + 1);
}
iterator(arr, 0);
//
function Node(value) {
this.value = value;
this.next = null;
}
var a = new Node(1);
var b = new Node(2);
var c = new Node(3);
var d = new Node(4);
a.next = b;
b.next = c;
c.next = d;
function iterator2(head) {
if (head == null) return;
console.log(head.value);
iterator2(head.next);
}
iterator2(a);
링크 의 역 치
//
function Node(value) {
this.value = value;
this.next = null;
}
var a = new Node(1);
var b = new Node(2);
var c = new Node(3);
var d = new Node(4);
a.next = b;
b.next = c;
c.next = d;
function reverse(head) {
if (head.next.next == null) {
head.next.next = head;
return head.next;
} else {
var result = reverse(head.next);
head.next.next = head;
head.next = null;
return result;
}
}
function iterator2(head) {
if (head == null) return;
console.log(head.value);
iterator2(head.next);
}
var newNode = reverse(a);
iterator2(newNode);
양 방향 링크
//
function Node(value) {
this.value = value;
this.next = null;
this.prev = null;
}
var a = new Node(1);
var b = new Node(2);
var c = new Node(3);
var d = new Node(4);
a.next = b;
b.prev = a;
b.next = c;
c.prev = b;
c.next = d;
d.prev = c;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
전단 자동화 워 크 플 로 의 hooks예 를 들 어 우 리 는 git commt 전에 eslint 코드 검사, npm install 전에 프로젝트 의존 도 를 검사 하고 싶 습 니 다.전형 적 인 상황 에서 각종 도 구 는 특정한 동작 이 발생 할 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.