기술 면접 준비: 단일 링크 목록 메모지(JavaScript) 첫 번째 섹션

기술 면접이 며칠밖에 안 남았어요?데이터 구조를 빠르게 파악해야 합니까?쿨, 우리 시작합시다!다음은 단일 링크 목록에 대한 자세한 내용입니다.

얘네 뭐야?



밧줄 위의 진주를 생각해봐.모든 진주는 강자를 통해 다음 진주와 연결된다.밧줄은 시작점, 끝점, 진주 총수 또는 길이가 있다.
이제 실제 데이터 구조의 그림을 살펴보겠습니다.

컴퓨터 대화에서 모든 진주는 현재 노드라고 불린다.노드에 데이터가 포함되어 있습니다.이러한 데이터는 숫자, 문자열, 심지어'전쟁과 평화'의 사본일 수 있다각 노드는 다음 노드를 가리킨다.이것은 모든 노드가 그 노드를 따르는 것을 의미한다(위 그림의 화살표와 같다).
체인 테이블의 첫 번째 노드를 머리라고 부른다.마지막 노드를 꼬리라고 합니다.끝부분은 체인 테이블의 마지막 노드입니다. 어떤 내용도 가리키지 않거나 컴퓨터 대화에서null값을 가리키지 않습니다.
우리가 진일보한 토론을 하기 전에, 너는 아마도 "이 체인 시계는 보기에 매우 정규 수조와 같다."라고 생각할 것이다.그래, 네가 옳다!
수조와 단사슬표의 장점과 단점을 살펴보자.

  • 배열에 색인이 있습니다.단일 체인 시계는 할 줄 모른다.
    만약 당신이 그룹에서 어떤 것을 찾고 싶다면, 당신이 필요로 하는 것은 색인일 뿐, 당신은 곧 그것을 찾을 것이다.체인 테이블에 색인이 없기 때문에 요소에 접근하는 유일한 방법은 체인 테이블의 시작부터 찾을 내용을 찾을 때까지 순환하는 것이다.
  • 메모리 저장: 수조를 일정한 크기의 빼빼로로 상상한다.그것들은 반드시'있는 그대로'메모리에 저장해야 한다.너는 그것들을 분리해서 한 조각은 여기에 놓고, 다른 한 조각은 거기에 두면 안 된다. (나는 나의 초콜릿을 깨뜨리지 않을 것이다!)수조는 반드시 연속적인 메모리 위치에 저장해야 한다.
  • 다른 한편, 체인 시계는 메모리의 곳곳에 저장할 수 있다.이것은 문제없다. 왜냐하면 체인 테이블의 모든 요소는 지침을 통해 뒤에 있는 요소를 기억하기 때문이다.
    이것은 체인 테이블이 비연속적인 메모리 위치에 저장될 수 있다는 것을 의미한다.네가 사슬시계로 나쁜 메모리에 얼마나 많은 물건을 넣을 수 있는지 생각해 봐라!
  • 마지막으로 면접에서 가장 중요한 것은 그룹 삽입과 삭제가 훨씬 느리다는 것이다.생각해 봐: 네가 100개의 수조를 가지고 있다고 가정해 봐.색인 10곳의 항목을 삭제합니다.현재 그룹의 모든 다른 항목은 이전 색인 11에서 99까지 삭제 항목이 남긴 구멍을 메우기 위해 점을 이동해야 합니다.삽입된 생각은 같다.항목을 원하는 위치에 삽입한 다음 나머지 항목을 모두 밀어서 새 항목에 공간을 비워야 합니다.100개의 도미노 골패에서 삽입하고 삭제해 보세요. 골패마다 얇은 옆에 서 있어요. 하나도 재미없어요!
  • 체인 테이블에 대해 말하자면, 삽입과 삭제는 매우 쉬운 일이다.메모리의 첫 번째 사용 가능한 메모리 공간을 찾는 것입니다. 목록에 있는 다른 내용과 인접할 필요가 없다는 것을 기억하고 바늘을 다시 조정하기만 하면 됩니다.이렇게 간단하고 빠르다!

    상금 차이는 면접관에게 깊은 인상을 남길 수 있다


    JS 개발자로서 이 점을 모를 수도 있지만, 그룹을 설명할 때, 실제로는 특정한 수량의 메모리를 분배합니다.예를 들어, Java를 사용하는 경우 myArrr라는 변수의 배열에 10개의 요소 길이가 있음을 선언해야 합니다.그룹 크기도 JS에 할당되지만 표시되지 않거나 처리해야 함*
    한 마디로 하면 수조에 대해 컴파일할 때 메모리를 성명하면 메모리를 분배한다.이를 정적 메모리 할당이라고 합니다.
    다른 한편, 체인 테이블에 대해서는 새 노드가 추가됨에 따라 실행할 때 메모리를 분배한다.이를 동적 메모리 할당이라고 합니다.따라서 이것은 정적ol수조보다 더 유연한 메모리 분배 안배입니다!
    됐어, 그만해.코드를 작성하기 시작합시다.당신의 면접관은 당신에게 단일 체인 시계를 실현하라고 요구할 가능성이 높습니다!
    이 모든 데이터 구조는 클래스를 사용하기 때문에 기본적인 대상 프로그래밍 기술을 습득했는지 확인하십시오.
    우리의 체인 시계를 쓰기 위해서 우리는 실제로 두 종류가 필요하다.첫 번째 클래스는 노드를 만들 것입니다. (우리의 링크 목록은 다음 노드를 가리키는 노드로 구성됩니다.)
    각 노드에는 값 (val) 과 다음 노드 또는 포인터 두 개의 속성이 있습니다.우리 바늘을'다음'이라고 부르는 게 어때요?코드는 다음과 같습니다.
    class Node {
     constructor(val) {
       this.val = val
       this.next = next
     }
    }
    
    다음으로 두 번째 클래스를 구성해야 합니다. "Singly Linked List"라고 명명합니다.
    우리는 Single Linked List 클래스의 모든 실례가 길이와 머리, 꼬리가 있기를 바란다.우리는 길이가 0인 모든 실례부터 시작할 것이다.머리와 꼬리를 "null"로 설정합니다.깨끗한 시작만큼 좋은 것은 없다!
    코드입니다.SinglyLinkedList 클래스는 이전 "Node"클래스 아래에 있습니다.
    class Node {
     constructor(val) {
       this.val = val
       this.next = next
     }
    }
    
    class SinglyLinkedList {
     constructor() {
       this.length = 0
       this.head = null
       this.tail = null
     }
    }
    
    지금까지 당신의 면접에서 당신은 이곳을 가진 것처럼 그 검은색 표지에서 일할 것입니다!가봐!!!
    계속해서 더 많은 면접 준비를 지켜봐 주십시오.
    *JavaScript 개발자로서 제가 가장 잘한 일 중 하나는 몇 개의 Java 과정을 배웠다는 것입니다.이것은 마치 자동 교환(JavaScript)에서 수동 교환(Java)으로 전환하는 것과 같다.조용한 거리를 찾아봐!

    좋은 웹페이지 즐겨찾기