我正在尝试在Perl中实现一个堆栈,我有一个数组。我想在数组上推送项目,弹出项目并打印出新数组,如下所示:“1,2,3,5,6
我该怎么做?我的代码只是将数字6添加到数组的顶部。
#!usr/bin/perl
@array = 1..5;
push @array, 6; #Push the number 6 into the array
pop @array, 4; #Pop the number 4 out of the array
print "The array is now $array[-1].\n";
答案 0 :(得分:8)
首先,使用use strict; use warnings;
。
pop @array, 4;
应该做什么?
弹出四个元素?
splice(@array, -4);
将最后一个元素替换为值4?
$array[-1] = 4;
过滤掉值4?
@array = grep { $_ != 4 } @array;
参考:
顺便说一句,#usr/bin/perl
毫无意义。它应该是#!/usr/bin/perl
。
顺便说一下,换行符的转义序列为\n
,而不是/n
。
答案 1 :(得分:4)
堆栈的整个要点是您只能从顶部访问项目。您只能将项目推到堆栈顶部或从堆栈顶部弹出一个项目。中间的元素无法访问。使用Perl的shift和unshift函数,您还可以实现队列和出队(或双端队列)。
#!/usr/bin/perl
use strict;
use warnings;
my @array = 1..5;
push @array, 6;
push @array, 7;
my $top = pop @array;
print "Top was $top\n";
print "Remainder of array is ", join(", ", @array), "\n";
答案 2 :(得分:0)