u010566561的专栏

学习了一下Lua里的数据结构,都是文档上面的例子,就是把它敲一遍而已看一下输出结果。仍然使用LuaEditor(v6.30)进行编译和运行。 1. 顺序表和多维数组 2. 链表 3. 双向链表 一.顺序表 顺序表不必多说,,和一维数组是一样的。二维数组,就是元素是数组的一维数组。 上个例子:

list = {}= io.read()list[i] = valuei = i + 1value = io.read()endfor j=1,#list doprint (list[j])end

下面看运行结果,我们可以输入数字也可以输入字符串,结束的时候,我们输入Ctrl+z结束输入。

数组大家都比较了解,就不做叙述了。 二.链表 相比于使用C语言来描述链表,用Lua来描述,会简洁很多。我们可以聊表中的每一个节点看成一个table,table 里面包含两个数据,一个是这个节点的值,另一个是指向下一个节点的“指针”。不多说了,上码:

list = nillocal v = io.read()while v dolist = {next = list, value = v}v = io.read() endlocal l = listwhile l doprint (l.value)l = l.nextend

上结果:

三.双向链表 参照文档上面的例子,给双向链表定义了四个操作,分别是左插入、左删除、右插入、右删除。或者是,头插入、头删除、右插入、右删除,都是一样的。不由得想起了使用STL里的deque,list。博主是一名C++程序猿。 上码:

List = {}{first = 0,last = 0}.pushleft (list , value)list[list.first] = valuelist..pushright (list , value)list.last = list.last + 1list[list..= list.== list.last thenprint (“list is empty”)= list[first]list[first] = nil — to allow garbage collection list.= list.print(“List is empty”)= list[last]list[last] = nil — wo allow garbage collectionlist.i = list.first + 1, list.last doprint (list[i])endendMyList = List.new()List.pushleft(MyList,10)List.pushleft(MyList,20)List.pushleft(MyList,30)List.Print(MyList)List.popleft (MyList)List.Print(MyList)

这个需要多组数据来测试,这里不一一测试了,只是简单的运行了一下,得到结果。

忍耐力较诸脑力,尤胜一筹。

u010566561的专栏

相关文章:

你感兴趣的文章:

标签云: