Javascript 데이터 구조 및 알고리즘_javascript 기술 목록에 대한 자세한 설명

WBOY
풀어 주다: 2016-05-16 16:10:01
원래의
1041명이 탐색했습니다.

머리말: 일상생활에서 사람들은 목록을 자주 사용합니다. 예를 들어 우리가 가끔 쇼핑을 할 때, 쇼핑할 때 모든 것을 사기 위해 가기 전에 사고 싶은 것들의 목록을 만들 수 있습니다. 또는 우리가 어렸을 때 학교에 다닐 때마다 시험이 끝난 후 학교에서는 시험에서 득점한 상위 10명의 학생의 순위와 성적표를 나열하는 등의 모든 것이 목록의 예입니다. . 우리는 컴퓨터에서도 목록을 사용하는데, 목록은 어디에 사용하기에 적합한가요? 사용하기에 적합하지 않은 곳은 어디입니까?

사용에 적합: 목록에 요소가 많지 않은 경우 목록을 사용할 수 있습니다. 목록에 있는 요소를 검색하거나 정렬할 때 효율성이 매우 높기 때문입니다. 반대로 요소가 너무 많은 경우. 목록이 더 이상 적합하지 않습니다.

1: 리스트의 추상 데이터 유형 정의

목록의 추상 데이터 유형을 디자인하려면 목록이 어떤 속성을 가져야 하는지, 목록에서 어떤 작업을 수행해야 하는지 등을 포함하여 목록에 대한 정의를 제공해야 합니다.

목록은 순서가 지정된 데이터 집합입니다. 각 목록의 데이터 항목을 요소라고 합니다. JavaScript에서 목록의 요소는 모든 데이터 유형이 될 수 있습니다. 목록에 얼마나 많은 요소를 저장할 수 있는지에 대한 사전 합의는 없습니다. 그러나 실제 사용 시에는 프로그램 메모리에 따라 요소 수가 제한됩니다.

이제 목록을 디자인하고 나면 목록 구현과 여기에 포함되어야 하는 속성 및 메서드에 대해 생각해 볼 수 있습니다. 물론 다음 디자인은 "Javascript Data Structure and Algorithm" 책의 데모를 기반으로 합니다. 지금까지 우리는 미래에 프로그램을 작성할 때 참조로 자신만의 추상 클래스를 디자인하는 방법을 배울 수 있었습니다. 지금 책에 있는 데모를 공부하는 데 가장 중요한 것은 그들의 디자인 아이디어와 코드 작성 방법을 배우는 것입니다.

1. listSize(속성): listSize 변수를 사용하여 목록의 요소 수를 저장합니다.
2. pos(속성): 목록의 현재 위치, 요소의 인덱스입니다.
3. dataStore(속성): 요소 개수를 저장하기 위해 빈 배열을 초기화합니다. 목록에서 특정 요소를 가져오려면 dataStore[pos];

와 같은 위의 pos 속성을 사용할 수 있습니다.

모든 방법은 다음 목록에 설명되어 있으며 하나씩 소개되지는 않습니다.

2: 리스트 클래스 구현 방법

위에서 정의한 리스트 추상 데이터 타입에 따르면, 다음과 같이 생성자 프로토타입 모드를 통해 다음과 같은 List 클래스를 구현할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

함수 목록() {
// 목록의 요소 수
This.listSize = 0;

// 목록의 현재 위치는 무엇입니까
This.pos = 0;

// 목록 요소를 저장하기 위해 빈 배열을 초기화합니다
This.dataStore = [];

}

List.prototype = {
 
//목록 끝에 요소 추가
추가: 함수(요소) {
      var self = this;
           self.dataStore[this.listSize] = 요소;
},

// 목록에서 요소 제거
제거: 함수(요소) {
      var self = this;
      var curIndex = self.find(element);
If(curIndex > -1) {
                 self.dataStore.splice(curIndex,1);
​​​​​​—self.listSize;
             true를 반환합니다.
}
         false를 반환합니다.
},

// 목록에서 요소를 찾아 인덱스를 반환합니다
찾기: 함수(요소) {
      var self = this;
for(var i = 0,dataLen = self.dataStore.length; i < dataLen; i ) {
If(self.dataStore[i] == 요소) {
                   i 반환;
            }
}
         -1을 반환합니다.
},
 
// 목록의 요소 수를 반환합니다
길이: 함수() {
          return this.listSize;
},

// 목록에 요소 표시
toString: 함수(){
          this.dataStore를 반환합니다.
},

/*
* 지정된 요소 뒤에 요소를 삽입합니다
* @param 요소 현재 요소
* @param elementAfter 이 요소 뒤에 현재 요소를 삽입합니다
*/
​ 삽입: 함수(요소,elementAfter){
      var self = this;
        var insertPos = self.find(elementAfter);
If(insertPos > -1) {
                 self.dataStore.splice(insertPos 1,0,element);
                self.listSize;
             true를 반환합니다.
}
         false를 반환합니다.
},
 
// 목록의 모든 요소 지우기
지우기: function() {
          this.dataStore를 삭제하세요.
This.dataStore = [];
This.listSize = this.pos = 0;
},
// 주어진 요소가 목록에 있는지 확인
포함: 함수(요소) {
      var self = this;
for(var i = 0,ilen = self.dataStore.length; i < ilen; i ) {
If(self.dataStore[i] == 요소) {
                   true를 반환합니다.
            }
}
         false를 반환합니다.
},
// 목록의 현재 요소를 첫 번째 위치로 이동
앞: function(){
This.pos = 0;
},
// 목록의 현재 요소를 마지막 위치로 이동
종료: 함수(){
This.pos = this.listSize - 1;
},
// 현재 위치를 한 위치 뒤로 이동
이전: function(){
If(this.pos > 0) {
​​​​​​—this.pos;
}
},
// 현재 위치를 한 위치 앞으로 이동
다음: function(){
If(this.pos < this.listSize - 1) {
이.pos;
}
},
// 목록의 현재 위치를 반환합니다
CurPos: 함수(){
         this.pos 반환;
},
//현재 위치를 지정한 위치로 이동
MoveTo: 함수(n) {
This.pos = n;
},
// 현재 위치의 요소를 반환
GetElement:함수(){
          return this.dataStore[this.pos];
}
};

위와 같이: 위와 같은 많은 메서드를 포함하는 목록 클래스를 구현합니다. 물론 다른 메서드를 확장하여 목록 클래스의 구현을 풍부하게 할 수도 있습니다. 가장 중요한 것은 위의 코딩 방법을 배우는 것입니다.

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿