shijiang1130 发表于 2014-10-16 16:02

【queue】FIFO queues

本帖最后由 shijiang1130 于 2014-12-26 23:24 编辑

Abstract Data Type for FIFO Queues
模块名: queue

2> queue:new().
{[],[]}
3> A=queue:new().
{[],[]}
4> A.
{[],[]}
5> queue:is_queue(A).
true
6> queue:len(A).
0
7> queue:in("aaa",A).
{["aaa"],[]}
8> queue:len(A).   
0
9> queue:in("aaa",A).
{["aaa"],[]}
10> Q2=queue:in("aaa",A).
{["aaa"],[]}
11> queue:len(Q2).      
1
12> queue:get(Q2).
"aaa"
13> queue:get(Q2).

shijiang1130 发表于 2015-10-25 19:50

17> A=queue:from_list(["www.baidu.com","www.163.com","www.qq.com","www.sina.com.cn"]).
{["www.sina.com.cn"],
["www.baidu.com","www.163.com","www.qq.com"]}
18> queue:drop(A).
{["www.sina.com.cn"],["www.163.com","www.qq.com"]}
19> queue:in("www.aa.com",A).                                                   
{["www.aa.com","www.sina.com.cn"],
["www.baidu.com","www.163.com","www.qq.com"]}
20> queue:drop(A).         
{["www.sina.com.cn"],["www.163.com","www.qq.com"]}

21> queue:out(A).
{{value,"www.baidu.com"},
{["www.sina.com.cn"],["www.163.com","www.qq.com"]}}
22> queue:last(A).
"www.sina.com.cn"
23> queue:head(A).
"www.baidu.com"
24> A.                     
{["www.sina.com.cn"],
["www.baidu.com","www.163.com","www.qq.com"]}
25> queue:in("www.aa.com",A).
{["www.aa.com","www.sina.com.cn"],
["www.baidu.com","www.163.com","www.qq.com"]}
26> queue:out(A).            
{{value,"www.baidu.com"},
{["www.sina.com.cn"],["www.163.com","www.qq.com"]}}
27> queue:drop(A).         
{["www.sina.com.cn"],["www.163.com","www.qq.com"]}
28> S=queue:drop(A).
{["www.sina.com.cn"],["www.163.com","www.qq.com"]}
29> S.      
{["www.sina.com.cn"],["www.163.com","www.qq.com"]}
30> queue:drop(S).
{["www.sina.com.cn"],["www.qq.com"]}
31> S1=queue:drop(S).
{["www.sina.com.cn"],["www.qq.com"]}
32> queue:drop(S1).
{[],["www.sina.com.cn"]}
33>

shijiang1130 发表于 2015-10-25 21:33

enqueue(Value, Queue) ->
    Pushed = queue:in(Value, Queue),
    Sum = fun (Q) -> lists:sum(queue:to_list(Q)) end,
    case queue:len(Pushed) of
      Len when Len > 10 ->
            Popped = queue:drop(Pushed),
            {Popped, Sum(Popped)};
      _ ->
            {Pushed, Sum(Pushed)}
    end.
页: [1]
查看完整版本: 【queue】FIFO queues