![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 62
前端吕小布
庸人方自扰,自在就好
展开
-
JS实现双链表
我们了解一下双链表的结构。尽管从链表中头节点遍历到尾节点很容易,但是反过来,从后向前遍历就没有那么简单。通过给Node对象增加一个属性,该属性存储指向前驱节点的链接,这样就容易多了。此时祥链表中插入一个节点需要更多的工作,我们需要指出该节点正确的前驱和后续。但是在从链表中删除节点的时候效率更高了,不需要再查找待删除节点的前驱节点了。用JS设计一个单链表我们需要设计两个类,Node 类用来表示节点,LinkedList类提供插入节点、删除节点、显示列表元素的方法,以及其他一些辅助方法。Node类:fu原创 2021-12-06 18:24:41 · 422 阅读 · 0 评论 -
JS实现单链表
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点(链表中每一个元素称为节点)组成,节点可以在运行时动态生成。每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)原创 2021-12-03 17:39:13 · 545 阅读 · 0 评论 -
JS用两个栈实现一个队列
题目:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empty() 如果队列为空,返回 true ;否则,返回 false思路:一个作为存储栈,另一个作为辅助栈入队(push)一个队列是 FIFO 的,但一个栈是 LIFO 的。原创 2021-03-28 18:35:28 · 850 阅读 · 0 评论 -
用JS实现一个栈
我们先来看一道多益网络的笔试题:用JS实现一个栈的类,要求含有push(入栈)、pop(出栈)、getPeek(获取栈顶)、isAmpty(判断是否为空栈)、size(获取栈的元素数量)、reset(清空栈)、print(打印栈)这几种方法什么是栈(Stack)栈是一种遵从后进先出(LIFO)原则的有序集合。 新添加的或待删除的元素都保存在栈的末尾,称为栈顶,另一端叫栈底。 在栈里,新元素都靠近栈顶,旧元素都接近栈底在生活中也能发现很多栈的例子。例如,厨房里堆放的盘子,总是叠在上方的先原创 2021-03-03 17:00:47 · 2834 阅读 · 1 评论 -
用JS实现一个队列
我们先来看一道携程2021春招的面试题:用JS实现一个队列想象中午食堂吃饭时、等电梯时、早晚高峰进地铁时,都需要排队。那么肯定是先排队的有优先权,然后依次进入。队列也是这个道理,只有一个出口,一个入口,特点是先进先出,这和栈的思想相反。队列有一个入口,取名为enqueue;出口取名为dequeue;正常情况下,还需要读取队首和队尾元素,命名为front和back,读取队列所有元素,命名为toStringData, 判断队列是否空,命名为isEmpty。现在可以完成队列的构造函数了,如下:fun原创 2021-03-19 04:39:44 · 1580 阅读 · 0 评论