Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. package ru.nk.lectures.lecture4.stack_example;
  2.  
  3. /*
  4. Пример динамического стека который автоматически меняет свой размер при заполнении
  5.  
  6. */
  7. public class TestFixedStack {
  8. public static void main(String[] args) {
  9. DynStack mystack1 = new DynStack(5);
  10. DynStack mystack2 = new DynStack(8);
  11.  
  12. for (int i = 0; i < 12; i++) mystack1.push(i);
  13. for (int i = 0; i < 20; i++) mystack2.push(i);
  14.  
  15. for (int i = 0; i < 12; i++) {
  16. System.out.println(mystack1.pop());
  17. }
  18.  
  19. for (int i = 0; i < 20; i++) {
  20. System.out.println(mystack2.pop());
  21. }
  22. }
  23. }
  24.  
  25. class FixedStack implements IntStack{
  26. private Object stck[];
  27. private int tos;
  28.  
  29. public FixedStack(int size) {
  30. stck = new Object[size];
  31. tos = -1;
  32. }
  33.  
  34.  
  35.  
  36. public void push(Object item) {
  37. if(tos == stck.length-1)
  38. System.out.println("Стек заполнен");
  39. else
  40. stck[++tos] = item;
  41. }
  42.  
  43. public Object pop() {
  44. if (tos < 0) {
  45. System.out.println("Стек не загружен");
  46. return 0;
  47. }else return stck[tos--];
  48. }
  49. }
  50.  
  51. interface IntStack{
  52. void push(Object item);
  53. Object pop();
  54.  
  55. }
  56.  
  57. class DynStack{
  58. private int stck[];
  59. private int tos;
  60.  
  61.  
  62. public DynStack(int size) {
  63. stck = new int[size];
  64. tos = -1;
  65. }
  66.  
  67. public int pop() {
  68. if (tos < 0) {
  69. System.out.println("Стек не загружен");
  70. return 0;
  71. }else return stck[tos--];
  72. }
  73. //При занесении элемента проверяем размер стека
  74. //Если стек заполнен, увеличиваем массив вдвое
  75. public void push(int item){
  76. if(tos == stck.length-1){
  77. System.out.println("Размер стека увеличен вдвое");
  78. int temp[] = new int[stck.length * 2];
  79. for (int i = 0; i < stck.length; i++)temp[i] = stck[i];
  80. stck = temp;
  81. stck[++tos] = item;
  82.  
  83. }
  84. else stck[++tos] = item;
  85. }
  86.  
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement