首页 > 代码库 > 2017/03/31学习笔记

2017/03/31学习笔记

双向链表

单向链表的节点都只有一个指向下一个节点的指针
单向链表的数据元素无法直接访问其前驱元素
逆序访问单向链表中的元素时极其耗时的操作
双向链表在单向链表的基础上增加了指向前驱的指针
功能上双向链表可以完全取代单向链表的使用

栈是一种特殊的线性表

栈仅能在线性表的一端进行操作
栈顶:允许操作的一端
栈底:不允许操作的一端
首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的线性表。定义中说是在线性表的表尾进行插入和删除操作,这里表尾是指栈顶,而不是栈底。
他的特殊之处就在于限制了这个线性表的插入和删除位置,他始终只在栈底进行。这也就使得:栈底是固定的,最先进栈的只能在栈底。
栈的插入操作,叫作进栈,也叫压栈、入栈。

栈的链式存储结构,简称链栈
想想看,栈只是栈顶来做插入和删除的操作,栈顶放在链表的头部还是尾部呢?
由于单链表有头指针,而栈顶指针也是必须的,那么干嘛不让它俩合二为一呢,所以比较好的办法是吧栈顶放在单链表的头部。另外,都已经有了栈顶在头部,单链表中比较常用的头结点也就失去了意义,通常堆与链栈来说,是不需要头结点吧

2017/03/31学习笔记