为什么我的推送和流行方法不起作用?

Dop*_*eBP 0 perl stack

我正在尝试在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";
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 8

首先,使用use strict; use warnings;.

该怎么pop @array, 4;办?

弹出四个元素?

splice(@array, -4);
Run Code Online (Sandbox Code Playgroud)

用值4替换最后一个元素?

$array[-1] = 4;
Run Code Online (Sandbox Code Playgroud)

过滤掉值4?

@array = grep { $_ != 4 } @array;
Run Code Online (Sandbox Code Playgroud)

参考:


顺便说一句,#usr/bin/perl没有意义.它应该是#!/usr/bin/perl.

顺便说一句,换行符的转义序列\n不是/n.


Bil*_*ert 5

堆栈的全部意义是您只能从顶部访问项目。您只能将项目推到堆栈顶部或从堆栈顶部弹出项目。中间的元素不可访问。使用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";
Run Code Online (Sandbox Code Playgroud)