/*基于线性表的 - 堆栈尾部插入和删除*/class ListStack{constructor() {this.arr = new Array();this.length = 0;this.size = 10;this.realloc = () => {let new_arr;if(this.length === this.size) {// 满了 增加内存this.size = this.size*2;new_arr = new Array(this.size);} else if(this.size > 10 && this.length <= Math.floor(this.size /4)) {this.size = Math.floor(this.size /2);new_arr = new Array(this.size);}if(new_arr) {this.arr.forEach((v, i) => {new_arr[i] = v;});this.arr = [...new_arr];}}}push(value){this.arr[this.length] = value;this.length++;this.realloc();}pop() {if(this.length === 0) {return undefined;}const value = this.arr[this.length -1];delete this.arr[this.length -1];this.length--;this.realloc();return value;}}const list = new ListStack();list.push(1);list.push(2);list.push(3);list.push(4);list.push(1);list.push(2);list.push(3);list.push(4);list.push(1);list.push(2);list.push(3);list.push(4);console.log(list.pop());console.log(list.pop());console.log(list.pop());console.log(list.pop());console.log(list.pop());console.log(list.pop());console.log(list.pop());console.log(list);
