【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). 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> 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]