前端一定要掌握常用的数据结构,学会这一招,让你在开发中对数据结构有更清晰的认识!1.队列就像排队一样,队列先进先出,排队才能进入!classQueue{constructor(){this.arr=[]}enqueue(element){//入队this.arr.push(element)}dequeue(){//出队returnthis.items.shift()}}2.栈就像捡柴火一样。栈是先进后出的。类堆栈{构造函数(){this.arr=[];}push(element){//推送this.arr.push(element);}pop(){//弹出返回this.items.pop();}}3.链表链表使得我们删除数据和添加新数据更加方便!head指针指向第一个存储的元素节点,每个节点都有一个next属性指向下一个元素节点,最后一个元素的指针指向null来创建一个节点,每个节点的结构很简单classNode{构造函数(元素){this.element=element;//每个节点保存的内容this.next=null;//保存的指针,指向下一个节点}}构建链表classLinkList{constructor(){this.head=null;//header默认指向第一个节点,如果不为nullthis.length=0;}append(element){//添加节点constnode=newNode(element);如果(this.head==null){this.head=节点;//第一个节点是标题}else{让current=this.head;//从第一个节点开始查找最后一个节点while(current.next){current=current.next;}current.next=节点;//找到最后一个节点并添加next指向新节点}this.length++;//每增加一个长度}}使用链表不难看出,链表的特点是通过next指向下一个节点(像链条一样)constll=newLinkList();ll.append(1);ll.append(2);console.log(ll);//head:Node{element:1,next:Node{element:2,next:null}}实现链表的插入insert(position,element){//插入时,判断插入位置if(position>=0&&position<=this.length){constnode=newNode(element);//创建一个节点if(position===0){//如果位置是0node.next=this.head;//然后让当前节点成为头部this.head=node;}else{让current=this.head;//获取头节点搜索位置letprevious=null;让索引=0;while(index++
