2013-11-09 4 views
-1

그래서 여기에 몇 가지 코드가 있는데 무슨 일이 일어나고 있는지에 대한 기본적인 논리를 가지고 있습니다.하지만 정확히 한 행씩 무엇을하는지 이해하고 싶습니다. 파이썬 튜터와 비슷한 자바 스크립트 코드를 찾을 수 없으므로 도와주세요. LinkedLists의 작동 방식과이 코드가 단계별로 수행중인 작업을 이해하고 싶습니다. 실제 사례에서 이것을 언제 사용합니까? 이 배열의 차이점은 무엇입니까?자바 스크립트 배열을 배우기

+3

에 의해 불을 지르고 또는 크롬 dev에 도구 같은 설정 중단 점 및 코드 단계에서 진행을 사용할 수 있습니다. –

+0

정확히 무엇을 요구하고 있습니까? 연결된 목록이 어떻게 작동하는지 묻고 있습니까? 나는 연결된 목록이 기능적으로 언어간에 변하지 않는다는 것을 의미하는 데이터 구조라고 말한다. –

+0

우선 무엇보다 ... 일반 배열 대신 연결된 목록이 필요한 이유는 무엇입니까? –

답변

1

기본 사항 :

연결리스트 노드 만들어진 데이터 구조입니다. 각 노드는 유용한 데이터와 다음 노드에 대한 참조를 유지합니다. 목록에 대한 참조를 유지하려면 첫 번째 노드에 대한 참조 만 유지하면됩니다. 목록은 다른 노드 대신 null에 대한 참조가있는 노드로 끝납니다.

JS 코드 (주석)

// node structure: 
//{ data: value, // useful data 
// next: nextNode } // reference to next node. null for last node 


var LinkedList = function() { // constructor function 
    this.head = null; // reference to the first node 
}; 

LinkedList.prototype.insert = function(value) { // function you use to insert a new node 
    if(this.head === null) { // code for when the list has no nodes. 
     this.head = {data: value, next: null}; // simply init the reference to the first node to a node 
    } else { // if there are nodes, you need to go through the list to get the to the last node 
     var temp = this.head; // start from the first node 
     while(temp.next !== null) { // until you find the node that has no next 
      temp = temp.next; // go from one node to the next 
     } 
     temp.next = {data: value, next: null}; // the last node should point to a new node you create (which points to nothing, so it becomes the last node) 
    } }; 

나은 해결책 :

리스트 구조뿐만 아니라 마지막 노드를 가리키는 포인터를 유지. 삽입은 O (1)이됩니다. 삭제는 여전히 O (n)이므로 마지막 노드가 삭제되면 포인터를 업데이트해야합니다.

편집 : 대답 새로운 질문

는 일반적으로 배열 더 나은이지만, 연결리스트가 바람직하다 경우가있다합니다. 한 가지 분명한 예는 조각난 메모리가 많은 환경입니다. 배열은 인접한 할당 된 메모리가 필요합니다. 따라서 메모리가 조각화되면 할당 할 수있는 최대 배열은 매우 작습니다. 링크 된 목록은 노드가 하나 더있는 공간이 있으면 언제나 더 많은 메모리를 확보 할 수 있습니다. 연결 목록이 JS (어쩌면 인터뷰 질문)에서 유용했는지는 알지 못했지만, 그것이 가능하다는 것을 아는 것은 흥미 롭습니다.

0

자바 스크립트로 테스트하는 방법에 대해 묻고 싶습니다. Jasmine 또는 QUnit으로 검색 할 수 있습니다. 나는 파이썬 튜터에게 익숙하지 않아서 이것들이 비슷한 지 알지 못한다. 그러나 그것은 시작이다.

1

당신은보다 구체적인 질문은 가능성이 더 나은 대답 할 것이다 단계

관련 문제