Lua初学习 9-14_03 数据结构 ---> 队列 (自己写的 跟书上差不多)

摘要:
1: 创建一个双向队列列表={first=1,last=0}函数列表:pushFirst(value)--put a valuelocalf=self。first1-f=0self[f]=值--self[0]=值self。first=f-self。f=0-打印(self.first,f)endfunctionlist:pushLast(value)从开始-

1:创建一个双向队列

list = { first =1,last = 0}

function list:pushFirst(value) --从头放入一个 value
local f = self.first-1 -- f=0
self[f] = value --self[0] = value
self.first =f -- self.f = 0
--print(self.first,f)
end

function list:pushLast(value) --从尾放入一个 value
local l= self.last+1
self[l] = value
self.last = l
end

function list:popFirst() --推出第一个value
if(self.first > self.last) then
print("警告 : 队列已经空了 ")
return nil
end
--print("进来时候 first index : ",self.first)
local v = self[self.first]
--print("推出来的first:",self[self.first])
self[self.first] = nil
self.first = self.first + 1
--print("list first index : ",self.first)
return v
end

function list:popLast() --推出最后一个value
if(self.first > self.last) then
print("警告 : 队列已经空了 ")
return nil
end
local v = self[self.last]
self[self.last] = nil
self.last =self.last-1
return v
end


list:pushFirst(11)
list:pushFirst(22)
list:pushFirst(33)
list:pushLast(44)
list:pushLast(55)
--从前放入3个 从后放入2个 33 22 11 44 55

print(list:popLast()) --last 55
list:pushLast(99) -- 33 22 11 44 99
list:pushFirst("orz") --orz" 33 22 11 44 99
print(list:popFirst()) --first orz

      ========接下来再推剩下的==========

print(list:popFirst()) --剩余5   ->orz
print(list:popFirst()) --剩余4       33
print(list:popFirst()) --剩余3       22
print(list:popFirst()) --剩余2       11
print(list:popFirst()) --剩余1       44
print(list:popFirst()) --剩余0       99
print(list:popFirst()) --剩余0       空警告

免责声明:文章转载自《Lua初学习 9-14_03 数据结构 ---> 队列 (自己写的 跟书上差不多)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c++实现多叉树树形显示(适合家谱的显示)使用podman容器部署飞儿云框架下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

unity_数据结构(常见数据结构及适用场景)

常见的数据结构: 1.Array: 最简单的数据结构 特点:数组存储在连续的内存上。数组的内容都是相同类型。数组可以直接通过下标访问。优点:由于是在连续内存上存储的,所以它的索引速度非常快,访问一个元素的时间是恒定的也就是说与数组的元素数量无关,而且赋值与修改元素也很简单。缺点:由于是连续存储,所以在两个元素之间插入新的元素就变得不方便。声明一个新的数组时...

数据结构-王道-图

目录 图的基本概念 有向图 简单图 多重图 完全图 子图 连通,连通图和连通分量 邻接表法 十字链表 十字链表 BFS算法求解单源最短路径问题 深度优先搜索(Depth-First-Search) 图的应用 最小生成树(Minimum-Spaning-Tree) Prime算法 KruSkal算法 最短路径 Dijkstra算法 Floy...

将json转换为数据结构体

主要用到的依赖:(划重点:这个依赖需要加jdk版本号,不加的话用不了,且目前最高是jdk15) (ps: 用于json与其他类型格式转换,JSONObject, JSONArray等来自这个包) <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->...

重学数据结构系列之——静态查找表查找算法

学习来源:计蒜客 1.认识查找 就是在一个集合里面找到某个元素。集合就叫查找表 通常对查找表有 4 种操作: 查找:在查找表中查看某个特定的记录是否存在 检索:查找某个特定记录的各种属性 插入:将某个不存在的数据元素插入到查找表中删除:从查找表中删除某个特定元素 如果对查找表只执行前两种操作,则称这类查找表为 静态查找表(static search...

30、深入浅出MFC学习笔记,多线程

一、基本概念 1、模块:一段可执行的程序(包括EXE和DLL),其程序代码、数据、资源被加载到内存中,由系统建置一个数据结构来管理它,就是一个模块。这里所说的数据结构,名为Module Database(MDB),其实就是PE格式中的PE表头,可以从WINNT.H 档中找到一个IMAGE_NT_HEADER 结构,就是它。 2、进程:就是一大堆拥有权(o...

Win32汇编--数据结构

数据结构 据结构实际上是由多个字段组成的数据样板,相当于一种自定义的数据类型,数据结构中间的每一个字段可以是字节、字、双字、字符串或所有可能的数据类型。(据说人是由泥巴捏成的) 比如在API函数RegisterClass 中要使用到一个叫做WNDCLASS的数据结构,Microsoft的手册上是如下定义的: struct _WNDCLASS typeof...