-
LeetCode206题-翻转链表
如何对链表实现反转。通过递归和非递归两种方法来实现。
-
链表头指针和虚拟头节点小结
零 头指针 链表是由一个一个的节点串联在一起,实际存放数据的是节点,每个节点中包含一个数据,以及指向下一个节点的指针。 头指针就是指向第一个节点的指针。有了头指针之后,我们便可以逐个找到链表中的所有元素。除了第一个节点之…
-
如何用链表来实现队列
我们前面用链表实现了栈,只需用链表头充当栈顶,每次入栈时,调用链表的addFirst(),出栈时调用链表的removeFirst()即可。比较方便实现的原因是,栈的操作基本都在栈顶。而链表的addFirst()/remo…
-
如何用链表来实现栈
我们在前面用数组这种底层数据结构来实现了栈,也用队列来实现了栈。我们学习和掌握了链表之后,就可以考虑用链表来实现栈了。
-
如何实现链表这种数据结构
我们前面实现的动态数组、栈、队列,虽然说是动态数据结构,其实,其底层是依赖一个resize()方法来实现的。 而,链表其本质上是一个真正的动态数据结构。如同火车头挂接一节一节的车厢一样。 另外,跟数组比较起来,数组要求在…
-
LeetCode 905题-按奇偶排序数组
LeetCode 905题-按奇偶排序数组:给定一个非负整数的数组,返回一个数组,所有的奇数元素在后面。
-
如何用队列实现栈?LeetCode第225题
要求使用2个队列来实现一个后进先出LIFO的栈,该栈支持的方法:入栈push()、出栈pop()、查看栈顶元素top()、栈是否为空empty()。
-
如何实现一个双端队列
零双端队列性质 见名知意,就是可以在队首、队尾分别执行入队、出队操作的一种队列。 一实现思路 参照用数组实现队列的思路,我们就完全可以实现一个双端队列。因为,我们底层的动态数组已经实现了addFirst()/addLas…
-
如何实现一个支持动态扩展的循环队列
我们利用动态数组快速的实现了队列这种基础的数据结构。但是,由于底层是动态数组存储,每次出队操作(删除数组的第1个元素)导致后面所有的元素都需要向前移动一个位置,进而导致出队操作的均摊时间复杂度是O(n)。显然,这不是我们…
-
如何实现队列这种数据结构
队列依然是一种线性数据结构; 规定只能在两端操作的数据结构,不能操作中间元素; 先进先出,First In First Out;