技术论坛

 你找到牛鼻子了吗?——由复现FC_Stack所想

返回主题列表
作者 主题
'Razor
至圣

经验值:20130
发帖数:2777
精华帖:23
楼主    2023-07-27 18:30:28
主题:你找到牛鼻子了吗?——由复现FC_Stack所想 精华帖 

前几天论坛里新发了一帖子,里面有关于栈的内容,说FIFO栈,我心存疑惑,于是回翻老书,复习了一下栈stack相关的内容,确实是有点儿生疏了;再加上另外在微信平台看到一位师傅的SCL教程系列里面的一篇SCL实现栈FB的文章,于是也决定使用PLC代码再复现一下这基础的栈及相关的操作,采用全局DB+FC,相较常规以FB实现的方式,使用FC实现的话,有点儿坑,不过还好,功能完全复现了。

效果图如下





相较西门子常用状态字错误字的做法,我没有效仿,因为我想更直观地看到状态的变化,所以就直接全部采用了位变量。

关于栈这种基础的数据类型,常用也常见的操作就那么几样,reset/push/pop/getTop/getTopPointer/getDeepth/getSize/isFull/isEmpty,小计9种,栈变体在此处暂且不论。

----------------------------------------------------------------------------------------------------

如何找到牛鼻子并牢牢地牵住它?

----------------------------------------------------------------------------------------------------

牛鼻子是什么?牛鼻子是毛竹上面的那道细微的裂纹,是那团线团里的线头。

那栈的鼻子又在哪儿呢?

靠着那可怜地C语言基础,开始考虑应该如何编写PLC代码,从哪里下手?

先进行的isFull/isEmpty判断,怎么实现?

最原始的“比较”操作,里面的值和空栈初始值比较,数组遍历嘛,没问题。

其它操作无非就是push写、pop读后顺便再写个初始值进去,如何确定读写的具体位置?

开辟的buffer的形式是数组,使用数组索引变量吗?行,但是不是姓何的嫁给姓郑的——郑何氏,最多,它只能算是牛鼻子里的鼻毛!

谁是牛鼻子?栈顶指针!

栈顶指针通过什么获得,通过借助索引变量遍历数组和初始值比较获得。

Less is more……
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。