摘要: 1.栈主要包括两个操作 出栈和入栈;也就是在栈顶插入一个数据和从栈顶删除一个数据; 具有后进先出、先进后出的特性。 栈是一种操作受限的线性表,只允许在端插入和删除数据。 为什么会有栈这种数据结构? 适合特定场景。从功能上说,数组或者链表都可以替代栈,但是,因为特定的数据结构是对特定场景的抽象,而且数 阅读全文
posted @ 2020-05-05 15:36 Vincent-yuan 阅读(598) 评论(0) 推荐(0) 编辑
摘要: 1.数组和链表的内存分布 数组需要一块连续的内存空间,而链表则通过“指针”将一组零散的内存块串联起来 2.三种常见的链表 单链表、双向链表、循环链表 2.1 单链表 链表通过指针将一组零散的内存块串联在一起。其中内存块称为结点,并且还有一个记录下个结点地址的指针,叫做后继指针next。 其中,第一个 阅读全文
posted @ 2020-05-05 11:29 Vincent-yuan 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 之前有记录一版快速排序算法。 这里记录对它优化的一个版本。 之前快速排序一个缺点,就是使用递归算法对规模非常大的数据项进行排序可能会引起栈溢出,导致存储错误。 而且上面的代码的实现方式中,对枢纽的不同的选择,会造成不一样的算法的执行效率。 理想情况下,应该选择被排序的数据项的中值数据项作为枢纽。即对 阅读全文
posted @ 2020-05-05 10:42 Vincent-yuan 阅读(372) 评论(0) 推荐(0) 编辑