大话数据结构笔记-栈和队列

大话数据结构笔记-栈和队列

栈(stack)是限定仅在表尾进行插入和删除操作的线性表。

  • 允许插入和删除的一端称为栈顶(top)
  • 另一端称为栈尾、底(bottom)
  • 不含任何数据元素的栈称为空栈。
  • 栈又称为先进后出的线性表(LIFO)。

  • 插入叫做进栈、压栈、入栈、push

  • 删除叫做出栈、弹栈、pop

栈的顺序存储结构

用0下标的一端(就是顺序结构的首个元素)作为栈底,可以简化操作。
(插删过程中移动的元素少。)

两栈共享空间

看了一遍,基本上就是把两个栈口对口存在一个数组中,这样只要两栈的和不超过数组大小就可以。

也就是节省空间的一种方式,有合适的时候可以试一下。

栈的链式存储结构

简称 恋战 链栈

  • 链栈的栈顶在链表的头部。
  • 链栈不需要头结点。
  • 链栈不存在栈满的情况。

如果栈在使用过程中元素变化无法预料,有时很小有时很大,那么最好使用链栈,反之使用顺序栈。

栈的作用

简化程序。

递归就是一种栈的应用。

斐波纳契数列:

有个对新生兔子第2个月可以繁殖,每个月生一对,一年后多少对。

<?php
function f(i)
{
    if(i<2) {
        return i == 0 ? 0:1;
    }
    return f(i-1) + f(i-2);
}

//i为月份
n = 0;
for (i = 0; i < 12; i++) {
    n = f(i);
}
echo n;

队列

队列(queue)是指允许在一端进行插入操作,而另一端进行删除操作的线性表。

  • 队列是先进先出的线性表FIFO
  • 允许插入的一端为队尾
  • 另一端为对头

把队列的首尾相接的顺序存储结构称为循环队列。

队列的链式存储结构为单链表,只不过只能尾进头出,链队列。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值