大话数据结构 -04-1 栈
一、栈
1. 定义
栈元素具有线性关系,即前驱后继关系。是一种特殊的线性表。
栈的插入操作,叫作进栈,也称压栈、入栈。 栈的删除操作,叫做出栈,也有的叫作弹栈。
注意:最先进栈的元素不一定最后出栈。如三个整型元素1,2,3。
2. 抽象数据类型
同线性表一样,有顺序存储与链式存储。
3. 栈的顺序存储结构
「1」进栈(判断栈是否满)时间复杂读为O(1)
「2」出栈(判断栈是否为空)时间复杂读为O(1)
「3」两栈共享空间
空间结构
push方法:(除了要插入的元素值参数外,还有一个判断书stack1还是stack2的栈号参数stackNumber)
pop方法:(判断栈是否非空)
4. 栈的链式存储结构
把栈顶放在单链表的头部 (头指针此时为top指针)
链栈的结构:
定义了结点类型,及栈的top指针和栈的元素数count。(放在两个结构里!!!)
进栈操作:
出栈操作:
链栈的进栈与出栈时间复杂度均为O(1)
如果栈的使用过程中元素变化不可预料,有时很小,有时非常大,那么最好使用链栈。反之,如果它的变化在可控范围内,建议使用顺序栈会更好一些。