源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

62 行
1.2 KiB

  1. List = {}
  2. local List = List
  3. function List.New()
  4. return {first = 0, last = -1}
  5. end
  6. function List.Size(list)
  7. if list.first > list.last then
  8. return 0
  9. else
  10. return list.last + 1 - list.first
  11. end
  12. end
  13. function List.Empty(list)
  14. return list.first > list.last
  15. end
  16. function List.Get(list, index)
  17. local index = list.first + index
  18. return list[index]
  19. end
  20. function List.PushFront(list, value)
  21. local first = list.first - 1
  22. list.first = first
  23. list[first] = value
  24. end
  25. function List.PushBack(list, value)
  26. local last = list.last + 1
  27. list.last = last
  28. list[last] = value
  29. end
  30. function List.PopFront(list)
  31. local first = list.first
  32. if first > list.last then LogError("list is empty") end
  33. local value = list[first]
  34. list[first] = nil -- to allow garbage collection
  35. list.first = first + 1
  36. return value
  37. end
  38. function List.PopBack(list)
  39. local last = list.last
  40. if list.first > last then LogError("list is empty") end
  41. local value = list[last]
  42. list[last] = nil -- to allow garbage collection
  43. list.last = last - 1
  44. return value
  45. end
  46. function List.GetBack(list)
  47. local last = list.last
  48. return list[last]
  49. end
  50. function List.GetFront(list)
  51. local first = list.first
  52. return list[first]
  53. end