js-栈结构

61 阅读1分钟

数组结构

数组的几种方法:

使用 push 方法追加一个元素在末尾

var arr = [1, 2, 3]
arr.push(4)
console.log(arr)

使用 pop 方法删除末尾的一个元素

var arr = [1, 2, 3]

arr.pop()
console.log(arr) // [1, 2]

使用 unshift 方法想数组的最前面添加一个元素

var arr = [1, 2, 3]
arr.unshift(4)
console.log(arr) // [4, 1, 2, 3]

使用 shift 方法删除数组最前面的一个元素

var arr = [1, 2, 3]
arr.shift()
console.log(arr) // [2, 3]

使用 splice 方法截取数组

var arr = [1, 2, 3, 4, 5]
arr.splice(1, 2)
console.log(arr) // [1, 4, 5]

使用 sort 方法给数组排序

var arr = [2, 3, 1]
arr.sort()
console.log(arr) // [1, 2, 3]

使用 join 链接数组

var arr = [1, 2, 3]
var str = arr.join('-')
console.log(arr) // [1, 2, 3]
console.log(str) // 1-2-3

栈结构应用:

十进制转化为二进制:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			class Stack{
			    #items = []
			    push(data){
			        this.#items.push(data)
			    }
			
			    pop(){
			        return this.#items.pop()
			    }
			
			    peek(){
			        //    return this.items[this.items.length-1]
			        return this.#items.at(-1)//倒数第一个元素
			    }
			    isEmpty(){
			        return this.#items.length===0
			    }
			
			    size(){
			        return this.#items.length
			    }
			
			    clear(){
			        this.#items = []
			    }
			
			    toString(){
			        return this.#items.join("")
			    }
			}
			function convert(decNumber){
			    let remStack = new Stack()
			    let number = decNumber
			    let rem 
			    let string = ""
			
			    while(number>0){
			        rem = number%2
			        remStack.push(rem)
			        number = Math.floor(number/2)
			    }
			
			    while(!remStack.isEmpty()){
			        string+=remStack.pop()
			    }
			
			    return string
			}
			convert(50)
		</script>
	</body>
</html>

十进制转化为n进制:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			class Stack{
			    #items = []
			    push(data){
			        this.#items.push(data)
			    }
			
			    pop(){
			        return this.#items.pop()
			    }
			
			    peek(){
			        //    return this.items[this.items.length-1]
			        return this.#items.at(-1)//倒数第一个元素
			    }
			    isEmpty(){
			        return this.#items.length===0
			    }
			
			    size(){
			        return this.#items.length
			    }
			
			    clear(){
			        this.#items = []
			    }
			
			    toString(){
			        return this.#items.join("")
			    }
			}
			function convert(decNumber,base){
			    let remStack = new Stack()
			    let number = decNumber
			    let rem 
			    let string = ""
			    let baseStr = "0123456789ABCDEF"
			    while(number>0){
			        rem = number%base
			        remStack.push(rem)
			        number = Math.floor(number/base)
			    }
			
			    while(!remStack.isEmpty()){
			        string+= baseStr[remStack.pop()]
			    }
			
			    return string
			}
			convert(50,8)
		</script>
	</body>
</html>