正文

Lua编程示例(三):稀疏表、双端队列、格式化输出、表和循环表的格式化输出(lua编写软件)原创

文章摘要

这篇文章介绍了如何使用表和指针来实现一个双端队列(Deque)的数据结构。文章首先通过循环表的共享子表示例,展示了表的引用和修改操作。接着,详细描述了双端队列的实现方法,包括`pushleft`、`pushright`、`popleft`和`popright`等基本操作。通过一系列代码示例,展示了如何在双端队列中实现双向插入和删除操作,并通过`display`函数输出队列元素。文章还提到了在操作过程中需要注意的错误提示,例如队列为空时的错误处理。整体内容简明扼要,重点突出双端队列的实现方法及其相关操作。

 a={} for i=1,10 do a[i]={} for j=0,10 do if(i%2==0) then a[i][j]=0 end end end print(a[9][10]) print(a[10][10]) print() –双端队列 List={} function List.new() return {first=0,last=-1} end function List.pushleft(list,value) local first=list.first-1 list[first]=value list.first=first end function List.pushright(list,value) local last=list.last+1 list[last]=value list.last=last end function List.popleft(list) local first=list.first if(first>list.last) then error(“list is empty”) end local res=list[first] list[first]=nil list.first=list.first+1 return res end function List.popright(list) local last=list.last if last<first then error(“the list is empty”) end local res=list[last] list[last]=nil list.last=list.last-1 return res end function List.display(list) if(list.first>list.last) then error(“the list is empty”,2) end for i=list.first ,list.last do print(list[i]) end end mylist=List.new() List.pushleft(mylist,12) List.pushleft(mylist,”00″) List.pushright(mylist,34) List.pushright(mylist,56) List.display(mylist) print() function newStack () return a[2]=a — 循环表 a.z=a[1] — 共享子表 save(‘a’,a)