웹 개발 메모장

[자바스크립트] List 리스트 클래스 본문

옛날../자료구조

[자바스크립트] List 리스트 클래스

도로롱주 2018. 2. 9. 10:24





리스트 클래스 구현



자바스크립트에서 다음과 같은 스펙을 가지는 리스트를 구현해봅시다.


변수

설명

listSize

리스트의 길이를 저장하는 변수

pos

리스트 탐색 관련 기능을 위해 위치를 나타내는 변수

dataStore

실제 값을 저장하는 배열



함수

설명

append

리스트 뒤에 요소를 추가하는 함수

insert(element, after)

요소를 원하는 위치에 추가하고 그 결과를 boolean 으로 반환하는 함수

find(element)

값을 통해 리스트의 요소를 찾아 index를 반환하는 함수

get(position)

index를 통해 리스트의 요소를 찾아 반환하는 함수

remove(element)

값을 통해 리스트의 요소를 삭제하고 그 결과를 boolean 으로 반환하는 함수

clear()

리스트 내용을 전부 삭제하여 초기화 시키는 함수

contains(element)

리스트에 특정 요소가 있는지 그 결과를 boolean 으로 반환하는 함수

length()

리스트의 길이를 반환하는 함수

front()

리스트 탐색 관련 기능을 위한 pos 가 맨 앞을 보게 하는 함수

end()

리스트 탐색 관련 기능을 위한 pos 가 맨 뒤를 보게 하는 함수

prev()

리스트 탐색 관련 기능을 위한 pos 가 이전 위치를 보게 하는 함수

next()

리스트 탐색 관련 기능을 위한 pos 가 다음 위치를 보게 하는 함수 

currPos()

리스트 탐색 관련 기능을 위한 pos 가 보고 있는 현재 위치를 반환 하는 함수

moveTo(position)

리스트 탐색 관련 기능을 위한 pos 가 특정 위치를 보게 하는 함수

toString()

리스트 요소들을 문자열로 반환하는 함수



리스트 구현 코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
function List() {
    this.listSize = 0;
    this.pos = 0;
    this.dataStore = [];
    this.clear = clear;
    this.find = find;
    this.toString = toString;
    this.insert = insert;
    this.append = append;
    this.remove = remove;
    this.front = front;
    this.end = end;
    this.prev = prev;
    this.next = next;
    this.length = length;
    this.currPos = currPos;
    this.moveTo = moveTo;
    this.getElement = getElement;
    this.length = length;
    this.contains = contains;
    this.get = get;
}
 
// 배열 뒤에 요소 추가하는 함수
function append(element) {
    this.dataStore[this.listSize++= element;
}
 
// 요소의 index를 구하는 함수 (존재하지 않는 경우 -1 반환)
function find(element) {
    for(var i=0; i<this.dataStore.length; i++) {
        if(this.dataStore[i] == element) {
            return i;
        }
    }
    return -1;
}
 
// 요소를 삭제하고 그 결과를 boolean 으로 반환하는 함수
function remove(element){
    var foundAt = this.find(element);
 
    if(foundAt > -1) {
        this.dataStore.splice(foundAt, 1);
        --this.listSize;
        return true;
    }
    return false;
}
 
// 리스트의 길이를 반환하는 함수
function length(){
    return this.listSize;
}
 
// 리스트 요소를 확인하는 함수
function toString() {
    return "["+this.dataStore+"]";
}
 
 
// 요소를 원하는 위치에 추가하고 그 결과를 boolean 으로 반환하는 함수
function insert(element, after){
    var insertPos = this.find(after);
    if(insertPos > -1) {
        this.dataStore.splice(insertPos+10, element);
        ++this.listSize;
        return true;
    }
    return false;
}
 
 
// 리스트의 모든 요소를 삭제하는 함수
function clear() {
    delete this.dataStore;
    this.dataStore.length = 0;
    this.listSize = 0;
}
 
// 리스트에 특정 요소가 있는지 그 결과를 boolean 으로 반환하는 함수
function contains(element) {
    for(var i=0;i<this.dataStore.length;i++) {
        if(this.dataStore[i] == element) {
            return true;
        }
    }
    return false;
}
 
// 리스트 탐색 관련 기능을 위한 pos 가 맨 앞을 보게 한다.
function front() {
    this.pos = 0;
}
 
// 리스트 탐색 관련 기능을 위한 pos 가 맨 뒤를 보게 한다.
function end() {
    this.pos = this.listSize-1;
}
 
// 리스트 탐색 관련 기능을 위한 pos 가 이전 위치를 보게 한다.
function prev() {
    if(this.pos > 0)
        --this.pos;
}
 
// 리스트 탐색 관련 기능을 위한 pos 가 다음 위치를 보게 한다.
function next() {
    if(this.pos < this.listSize-1) {
        ++this.pos;
    }
}
 
// 리스트 탐색 관련 기능을 위한 pos 가 보고 있는 현재 위치를 반환 한다.
function currPos() {
    return this.pos;
}
 
// 리스트 탐색 관련 기능을 위한 pos 가 특정 위치를 보게 한다.
function moveTo(position) {
    this.pos = position;
}
 
// pos 가 보고 있는 현재 위치의 값을 반환 한다.
function getElement(){
    return this.dataStore[this.pos];
}
 
// index 로 요소를 반환하는 함수
function get(position){
    return this.dataStore[position];
}
cs




리스트 사용 예제


1
2
3
4
5
6
7
8
var names = new List();
names.append("A");
names.append("B");
names.append("C");
names.append("E");
names.insert("D""C");
 
alert(names.toString());
cs





자바스크립트 자료구조와 알고리즘
국내도서
저자 : 마이클 맥밀런(Michael McMillan) / 우정은역
출판 : 한빛미디어 2014.08.30
상세보기




Comments