介绍

“要成高手,必练此功”。

要成为优秀的程序员,数据结构和算法是必修的内容。而现在的Web程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实现细节,如PHP的取栈操作array_pop,进栈操作array_push,都有指定的库函数,导致我们对基础算法的研究越来越少,最后成为一个工具的傀儡而已。

所以我还是建议更多的coder从基础开始学习。这篇就先讲我们最熟悉的栈操作开始入手,让我们熟悉栈。

栈为何物?

口诀“后进先出”,这是我印象最深的一句话,也是老师一坨讲解中,印象最深刻的。

定义:栈是限制插入和删除都只能发生在一个位置上进行的线性表,该位置是线性表的末端,叫做栈的顶。

过程:先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

分析

通过定义和过程,我们分析出数据结构(红色标识),动作部分(蓝色标识),以及动作的规则(黄色标识)。

请看

组成成分

数据:线性表(用array结构保存命名为data),末端索引(用int结构保存命名为end,初始值为null——因为开始线性表是没有元素的,所以就没有末端索引这么一说,而且由于不断取数据,添加数据,这个末端是变化的元素。)。

动作(方法):压入(push:规则,放在线性表最后面),弹出(pop:规则,从最后取出,并且末端位置向前移动)。

编码

运行结果

总结

以上是本人对栈的分析理解过程,由于我是一名php coder,所以我用php的角度去分析和编码。

如果是C语言去编码,数组应该指定最大宽度,因为C语言数组不像php数组能自行增长,必须要有一个初始宽度。

感谢川山甲投稿.

以上就介绍了PHP 程序员学数据结构与算法之《栈》,包括了开始入手,索引方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php学数据结构,PHP 程序员学数据结构与算法之《栈》相关推荐

  1. java c++ python哪个好_程序员学java好还是python语言好 c++又如何

    技术程序员学Java.C++.Python... 分析对比,到底学什么语言吃香,哪种语言最靠谱,如何学好这些语言呢? 几天前,我们在知识上看到这样一个问题:"java,C++,Python, ...

  2. java程序员学技术都会访问那些网站?

    Java程序员学技术的网站 哔哩哔哩 https://www.bilibili.com/ CSDN https://www.csdn.net/nav/java 掘金 https://juejin.cn ...

  3. 为何说数据结构是程序员最重要的基本功?

    想必每一个程序员在刚刚入行的时候都有学过数据结构和算法.但是据我所知,真的掌握这方面知识的人却是少之又少. 之前我们在自己的用户群中做过一次调研,主要是1-5年编程经验的工程师,有应届生.有小厂的程序 ...

  4. 程序员学数学读哪本书?(文末抽奖赠书)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在互联网一直流传了一个这样的段子-- "一流程序员靠数学 ...

  5. 程序员学数学读哪本书?(文末赠送精美礼品)

    关注我们丨文末赠书 在互联网一直流传了一个这样的段子-- "一流程序员靠数学,二流靠算法,三流靠逻辑,四流靠SDK,五流靠Google和StackOverFlow,六流靠百度和CSDN.低端 ...

  6. python培训出来的有公司要吗-参加Python培训到底需要学什么?好程序员

    原标题:参加Python培训到底需要学什么?好程序员 参加Python培训到底需要学什么?好程序员,参加Python培训到底需要学什么?在选择靠谱的北京Python工程师培训之前,你自己也要对Pyth ...

  7. 刚学编程的程序员必备这5大编程网站,你知道几个?

    一个好的网站,就是程序员学编程的基地. 虽说新手程序员也许知道一些在线编程网站,但是质量上乘的编程网站又知道几个呢? 下面就来给大家推荐5个质量上乘的编程网站: 0.Leetcode LeetCode ...

  8. 系列文章----.Net程序员学用Oracle系列

    .Net程序员学用Oracle系列(18):PLSQL Developer 攻略 .Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus) .Net程序员学用Oracle系列(1 ...

  9. 【看动漫学编程】程序员在异世界生个娃 第2篇:外挂已准备就绪

    前言 作者文笔比较水,还请见谅. 以下内容还将使用视频动态漫画表现,剪辑完将会贴出链接. 小说剧情为剧情需要,过渡到知识点,部分篇幅可能没有技术知识点还望谅解. 由于没有经费支持,所以画出来的东西是我 ...

最新文章

  1. OVS datapath主流程分析(二十一)
  2. python处理csv文件案例_python3读取csv文件任意行列代码实例
  3. 最长不下降子序列问题
  4. 三维重建:三维空间中平面的旋转公式
  5. Linux下的设计模式——委派模式(Delegate Pattern)深入浅出【建议新手收藏】
  6. 谈谈你对TCP三次握手和四次挥手的理解
  7. HOLOLENS的DEVICE POTAL连接和安装
  8. java实例成员与类成员区别_Java之实例成员与类成员
  9. Java - 填充Word文本域、Word转PDF操作
  10. php抓取网络电视源,电视直播源抓取工具箱
  11. 根据银行卡号判断所属银行
  12. android+ios打印机,Android/iOS手机安装HP打印机的详细方法和操作步骤
  13. excel如何隔行填充颜色
  14. web前端网页设计期末课程大作业:中华传统文化题材网页源码——基于HTML实现中国水墨风书画艺术网站(12个页面)
  15. oracle同义词不再有效,ORA-00980: 同义词转换不再有效
  16. 北京大学王悦博士给学生的话
  17. Linux系统备份工具 REAR (RELAX-AND-RECOVER)
  18. 【Linux数据库注意问题】java.sql.SQLSyntaxErrorException: Table ‘e.USER‘ doesn‘t exist
  19. win服务器系统更新失败怎么办,win10系统更新失败怎么办
  20. 案例分析:FIFA2018球员数据分析

热门文章

  1. 利用OpenCV读取和写入视频
  2. 2021年春季学期-信号与系统-第四次作业参考答案-第十一小题
  3. 2021年春季学期-信号与系统-第二次作业参考答案-第五小题
  4. 睡醒了,有精神了,简单讲讲这几天的故事了
  5. 旋转质量轮实验对象上的传感器
  6. 广义互相关计算TDOA
  7. 你的心思,我如何懂得?
  8. 电磁信号检测 | 本是同根生,相煎何太急
  9. python gui 可视化开发工具_用c语言输出九九乘法口诀表
  10. linux 文件操作函数,Linux下的文件操作函数及creat用法