Advertisement
Guest User

Untitled

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