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

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

栈(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
  • 允许插入的一端为队尾
  • 另一端为对头

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

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

发布了88 篇原创文章 · 获赞 150 · 访问量 56万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览