免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1212 | 回复: 2
打印 上一主题 下一主题

请问: 一个数组问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-02-13 16:19 |只看该作者 |倒序浏览
请问: 保持数组元素不变,要从数组末尾压入一个元素, 在从数组的顶端去掉一个元素,每次压力的数组值在变,请问改如何写

论坛徽章:
0
2 [报告]
发表于 2005-02-16 11:05 |只看该作者

请问: 一个数组问题

原理:简直就是不好意思说了。
压入(array_push)的时候判断一下是否数组超长了,如果超长了,就从头部弹出(array_shift)一个数组元素。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
3 [报告]
发表于 2005-02-18 12:09 |只看该作者

请问: 一个数组问题

这个也就是一个数据结构的队列问题,很简单的.

做一个定长数组,长度为iLen,然后设置两个指针,
iPosBegin =>; 表示队列的开始指针;
iPosEnd =>;表示队列的结束指针;
我们来看看:
假设:
iLen=3
add.0  =>;  1.23
add.1  =>;  2.34
add.2  =>;  3.45
iPosBegin = 0;
iPosEnd = iLen-1;
现在要求压入 4.56
怎么做呢:
if ((++$iPosBegin)==iLen) {$iPosBegin=0;}
if ((++$iPosEnd)==iLen) {$iPosEnd=0;}
$Array[$iPosEnd]=4.56;

这个的效率比使用array_push和array_shift要好
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP