九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

堆栈的简单lua实现


堆栈的简单lua实现

write by 九天雁翎(JTianLing) --
blog.csdn.net/vagrxie

 1 #!/usr/bin/env lua
 2 require "CList"
 3
 4 CStack = CList:New()
 5
 6 function CStack:Top()
 7     return self:End():MovePrev().pos.data
 8 end
 9
10 function CStack:Push(a)
11     self:PushBack(a)
12 end
13
14 function CStack:Pop()
15     self:PopBack()
16 end
17
18 function CStack:Size()
19     return CList.Size(self)
20 end
21
22 -- Test CStact
23 s = CStack:New()
24 s:Push(10)
25 print(s:Top())
26 s:Push(20)
27 print(s:Top())
28 s:Push(30)
29 print(s:Top())
30 s:Pop()
31 print(s:Top())
32 print(s:Size())
33
34
35
36
37

 

CList的是一个我用链表实现的表(仿照C++list 实现

具体实现见

http://www.jtianling.com/archive/2008/12/25/3606972.aspx

其实到了这个层次的lua语法(用一个类去实现另一个类),我已经不是太了解了,Programming in lua中也没有出现类似的语法,只简单的提到了怎么去New,书中是用这种方式去实现继承的。第19行的语法纯粹是自己摸索出来的,一开始用self:Size(),结果并没有从CList中去找,而是陷入了纯粹的递推自身调用。

 

write by 九天雁翎(JTianLing) --
blog.csdn.net/vagrxie

 

分类:  Lua  算法 
标签:  Lua  堆栈 

Posted By 九天雁翎 at 九天雁翎的博客 on 2008年12月27日

前一篇: 对Linker.Lin的 《[备忘]Lua的local是定义不是声明!》的研究 后一篇: VMWare虚拟机安装,SoftIce在虚拟机中的安装