JavaScript 의 데이터 구조 링크
16894 단어 자바 script
function defaultEquals (a, b) {
return a===b
}
class Node{
constructor(element) {
this.element = element
this.next=undefined
}
}
class LinkedList {
constructor(equalsFn =defaultEquals) {
this.count = 0
this.head=undefined
this.equalsFn =equalsFn
}
//
push (el) {
//
const node = new Node(el)
let current
// null
if (this.head == null) {
//
this.head=node
} else {
//
current = this.head
while (current.next!=null) {
current=current.next
}
//
current.next=node
}
// 1
this.count++
}
//
getElement (index) {
if (index>=0&& index<=this.count) {
let node = this.head
for (let i = 0; i < index&&node!=null; i++) {
node=node.next
}
return node
}
return undefined
}
//
removeAt (index) {
//
if (index >= 0 && index <= this.count) {
let current = this.head
if (index===0) {
this.head=current.next
} else {
//
const previous = this.getElement(index - 1)
//
current = previous.next
// ,
previous.next=current.next
}
this.count--
}
return undefined
}
//
insert(index,el){
//
if(index>=0&&index<=this.count){
//
const node=new Node(el)
// 0
if(index===0){
const current=this.head
node.next = current
this.head=node
}else{
//
const previous=this.getElement(index-1)
const current =previous.next
node.next=current
previous.next=node
}
this.count++
return true
}
return false
}
//
indexOf(el){
let current=this.head
for (let i = 0; i < this.count&&this.current!=null; i++) {
if(this.equalsFn(el,current.element)){
return i
}
current=current.next
}
return -1
}
//
size(){
return this.count
}
//
isEmpty(){
return this.count()===0
}
//
getHead(){
return this.head
}
//
toString () {
if (this.isEmpty()) {
return ''
}
let str = `${this.head.element}`
let current=this.head.next
for (let i = 1; i <this.size()&¤t!=null; i++) {
str += `,${current.element}`
current=current.next
}
return str
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.