为防止广告,目前nocow只有登录用户能够创建新页面。如要创建页面请先登录/注册(新用户需要等待1个小时才能正常使用该功能)。

双端队列

来自NOCOW
跳转到: 导航, 搜索

目录

[编辑] 简介

简单的说就是两边都可以插入,删除的队列。也称双向堆栈。 // By Clarkok http://www.clarkok.com/

[编辑] 声明

我们设true为正向,false为反向。

const
    delta : array[boolean] of shortint = (-1,1);  // 差量
var
    q:array[integer] of integer;
    open,close:array[boolean] of integer;         // 分别保存队列首尾标志,开始时都为零

[编辑] 操作

[编辑] 入队

procedure add(z:boolean;x:integer);       // z为方向
begin
    inc(open[z],delta[z]);
    q[open[z]]:=x;
end;

[编辑] 出队

function del(z:boolean):integer;
begin
    inc(close[z],delta[z]);
    del:=q[close[z]];
end;
个人工具