首页 > 试题广场 >

(双栈模拟数组)只使用两个栈结构stack1和stack2,

[填空题]
(双栈模拟数组)只使用两个栈结构stack1和stack2,模拟对数组的随机读取。作为栈结构,stack1和stack2只能访问栈顶(最后一个有效元素)。栈顶指针top1和top2均指向栈顶元素的下一个位置。
输入第一行包含两个整数,分别是数组长度n和访问次数m,中间用单个空格隔开。
第二行包含n个整数,依次给出数组各项(数组下标从0到n-1)。第三行包含m个整数,需要访问的数组F标。对于每次访问,输出对应的数组元素。(前两空每空2.5分,其余每空3分,共14分)

const
  SIZE = 100;
var
  stack1, stack2 : array[0..SIZE]of integer;
  top1, top2 : integer;
  n, m, i, j : integer;
procedure clearStack( );
var
  i : integer;
begin
  for i:=top1 to SIZE do
    stack1[i] := 0;
  for i:=top2 to SIZE do
    stack2[i] := 0;
end;
begin
  read(n, m);
  for i:=0 to n - 1 do
    read(stack1[i]);
  top1 := 1;
  top2 := 2;
  for j:=0 to m - 1 do
  begin
    read(i);
    while (i < top1 - 1) do
    begin
      dec(top1);
      3;
      inc(top2);
    end;
    while(i > top1 - 1)do
    begin
      dec(top2);
      4;
      inc(top1);
    end;
    clearStack( );
    writeln(stack1[5]);
  end;
end.

这道题你会答吗?花几分钟告诉大家答案吧!