list.lua 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. --region *.lua
  2. --Date
  3. --此文件由[BabeLua]插件自动生成
  4. local list = class("list")
  5. function list:ctor()
  6. self._headNode = { nextNode = nil }
  7. self._currentNode = self._headNode
  8. self._size = 0
  9. end
  10. function list:Begin()
  11. if self._headNode then
  12. return self._headNode.nextNode
  13. end
  14. return nil
  15. end
  16. function list:Back()
  17. if self._size <= 0 then
  18. return
  19. end
  20. return self._currentNode
  21. end
  22. function list:Size()
  23. return self._size
  24. end
  25. function list:PushBack(value)
  26. local node =
  27. {
  28. value = value,
  29. nextNode = nil
  30. }
  31. self._currentNode.nextNode = node
  32. self._currentNode = node
  33. self._size = self._size + 1
  34. end
  35. function list:Remove(node)
  36. if self._size <= 0 then
  37. return
  38. end
  39. local preIter = self._headNode
  40. local iter = self:Begin()
  41. while iter do
  42. if iter == node then
  43. if self._currentNode == iter then
  44. self._currentNode = preIter
  45. end
  46. preIter.nextNode = iter.nextNode
  47. self._size = self._size - 1
  48. break
  49. end
  50. preIter = iter
  51. iter = iter.nextNode
  52. end
  53. end
  54. function list:Clear()
  55. self._headNode = { nextNode = nil }
  56. self._currentNode = self._headNode
  57. self._size = 0
  58. end
  59. return list
  60. --endregion