Advertisement
Guest User

Untitled

a guest
Jan 29th, 2020
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. import java.util.Iterator;
  2. public class StackClient<Item> implements Iterable<Item> {
  3.  
  4. private int N;
  5. private Node first;
  6.  
  7. private class Node {
  8. //This is the primitive implementation of a linked list in Java.
  9. //defined a class named node with an "item" and a Node object "next".
  10. Item item;
  11. Node next;
  12. }
  13. public Item pop() {
  14. Item item = first.item;
  15. first = first.next;
  16. N--;
  17. return item;
  18. }
  19.  
  20. public StackClient() {
  21. N = 0;
  22. first = null;
  23. }
  24.  
  25. public void add(Item item) {
  26. Node oldfirst = first;
  27. first = new Node();
  28. first.item = item;
  29. first.next = oldfirst;
  30. }
  31.  
  32.  
  33. public boolean isEmpty() {
  34. return !iterator().hasNext(); //returns true if node reference is null
  35. }
  36.  
  37. public int size() {
  38. return N;
  39. }
  40.  
  41. public Iterator<Item> iterator() {
  42. return new ListIterator();
  43. }
  44.  
  45.  
  46. private class ListIterator implements Iterator<Item> {
  47. private Node current = first;
  48.  
  49. public boolean hasNext() {
  50. // TODO Auto-generated method stub
  51. return current != null;
  52. }
  53.  
  54. public Item next() {
  55. // TODO Auto-generated method stub
  56. Item item = current.item;
  57. current = current.next;
  58. return item;
  59. }
  60.  
  61. public void remove() {
  62. }
  63.  
  64. }
  65.  
  66. public static StackClient<String> copy(StackClient<String> stackClient) {
  67. StackClient<String> resultStack = new StackClient<String>();
  68. StackClient<String> tempStack = new StackClient<String>();
  69. Iterator<String> iterator = stackClient.iterator();
  70. while (iterator.hasNext()) {
  71. tempStack.add(iterator.next());
  72. }
  73.  
  74. Iterator<String> tempIterator = tempStack.iterator();
  75. while (tempIterator.hasNext()) {
  76. resultStack.add(tempIterator.next());
  77. }
  78.  
  79. return resultStack;
  80. }
  81.  
  82. public static StackClient<String> inverse(StackClient<String> stackClient) {
  83. StackClient<String> resultStack = new StackClient<String>();
  84. for (String name : stackClient){
  85. String a = stackClient.pop();
  86. resultStack.add(a);
  87. }
  88.  
  89. return resultStack;
  90. }
  91.  
  92.  
  93. public static void main(String[] args) {
  94. StackClient<String> stack = new StackClient<String>();
  95.  
  96.  
  97. stack.add("Parsa");
  98. stack.add("pooria");
  99. stack.add("Paniz");
  100.  
  101. System.out.println(stack.isEmpty());
  102. for (String string : stack) {
  103. System.out.print(string + " ");
  104. }
  105. StackClient<String> stackk = StackClient.copy(stack);
  106. for (String string : stackk) {
  107. System.out.print(string + " ");
  108. }
  109.  
  110. StackClient<String> inverted = StackClient.inverse(stack);
  111.  
  112. for (String string : stack) {
  113. System.out.print(string + " ");
  114. }
  115.  
  116.  
  117. }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement