Guest User

Untitled

a guest
Jan 22nd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. package {
  2. /**
  3. * simple circular stack for storing arrays
  4. * @author voidSkipper
  5. */
  6. public class Stack{
  7. private var head:StackElement;
  8. public var length:uint;
  9.  
  10. public function Stack(elements:Array=null) {
  11. this.head = new StackElement();
  12. head.next = head;
  13. head.prev = head;
  14. head.data = ["This linked list is empty."];
  15. length = 0;
  16. if (elements == null) {
  17. elements = [];
  18. }
  19. while (elements.length != 0) {
  20. pushfront(elements.pop());
  21. }
  22. }
  23.  
  24. //slowest function in this datatype.
  25. //o(1), O(n). errynyan else is constant.
  26. public function dataAt(at:uint):Array {
  27. if (at >= length) {
  28. return ["request out of range"];
  29. }
  30. var c:StackElement = head.next;
  31. while (at != 0) {
  32. c = c.next;
  33. at--;
  34. }
  35. return c.data;
  36. }
  37.  
  38. public function pushback(data:Array):void {
  39. var oldlast:StackElement = head.prev;
  40. var newlast:StackElement = new StackElement(data, oldlast, head);
  41. oldlast.next = newlast;
  42. head.prev = newlast;
  43. length++;
  44. }
  45.  
  46. public function pushfront(data:Array):void {
  47. var oldfirst:StackElement = head.next;
  48. var newfirst:StackElement = new StackElement(data, head, oldfirst);
  49. oldfirst.prev = newfirst;
  50. head.next = newfirst;
  51. length++;
  52. }
  53.  
  54. public function popback():Array {
  55. if (length == 0) {
  56. return head.data;
  57. }
  58. var victim:StackElement = head.prev;
  59. victim.prev.next = head;
  60. head.prev = victim.prev;
  61. victim.prev = victim.next = null;
  62. length--;
  63. return victim.data;
  64. }
  65.  
  66. public function popfront():Array {
  67. if (length == 0) {
  68. return head.data;
  69. }
  70. var victim:StackElement = head.next;
  71. victim.next.prev = head;
  72. head.next = victim.next;
  73. victim.prev = victim.next = null;
  74. length--;
  75. return victim.data;
  76. }
  77.  
  78. public function toString():String {
  79. var o:String = "";
  80. var c:StackElement = head;
  81. var i:uint = 0;
  82. while (i < length) {
  83. c = c.next;
  84. o = o + "[" + i + "]" + c.data + "\n";
  85. i++
  86. }
  87. return o;
  88. }
  89. }
  90.  
  91. }
Add Comment
Please, Sign In to add comment