-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTArrayStack.java
More file actions
129 lines (111 loc) · 3.27 KB
/
Copy pathTArrayStack.java
File metadata and controls
129 lines (111 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package inter;
import inter.InterStack;
import java.sql.SQLOutput;
import java.util.EmptyStackException;
public class TArrayStack<E> implements InterStack<E> {
private int end;
private int maxSize;
private int size;
private E[] memoryStack;
public TArrayStack(int maxSize) {
if (maxSize < 1)
this.maxSize = 16;
else
this.maxSize = maxSize;
memoryStack = (E[]) new Object[this.maxSize];
end = 0;
size = 0;
}
@Override
public boolean isEmpty() {
return size == 0;
}
@Override
public E top() {
if (size == 0) {
throw new EmptyStackException();
} else {
return memoryStack[end];
}
}
@Override
public E pop() {
if (size == 0) {
throw new EmptyStackException();
} else {
if (end != 0)
end--;
size--;
return memoryStack[size];
}
}
@Override
public void push(E item) {
if (size == maxSize) {
throw new StackOverflowError();
} else if (size == 0) {
memoryStack[end] = item;
size++;
} else {
end++;
memoryStack[end] = item;
size++;
}
}
public void extendMemory() {
int newMaxSize = (int) Math.round(maxSize * 1.5);
E[] newTab = (E[]) new Object[newMaxSize];
System.arraycopy(this.memoryStack, 0, newTab, 0, this.size);
this.memoryStack = newTab;
this.maxSize = newMaxSize;
}
@Override
public int size() {
return size;
}
@Override
public int deepLevel(E item) {
for (int i = 0; i < memoryStack.length; i++) {
if (memoryStack[i].equals(item)) {
System.out.println("Level of element in the stack is: ");
return i;
}
}
return -1;
//int deepLevel(item)sprawdzającą ja głęboko na stosie jest dostępny szukany elementitem.
}
public boolean isFull() {
return size == maxSize;
}
public String printStack() {
//String printStack()pozwalającą na wyświetlenie stosu w postacikolejnych elementów tablicy. Przykładowo jeżeli do stosu przekażemy napisy: „ene”, „due”, „rike”, „fake”, to metoda produkuje łańcuch znaków postaci:Tab[3]=fake <-topTab[2]=rikeTab[1]=dueTab[0]=ene
StringBuilder sb = new StringBuilder();
if (this.size == 0) {
return "[EMPTY]";
} else {
for (int i = size; i >= 0; i--) {
sb.append("Tab" + "[" + i + "] " + memoryStack[i] + "\n");
}
sb.append("<---top");
}
return sb.toString();
}
}
// public String printStack() {
// if (this.size == 0) {
// return "[]";
// } else {
// StringBuilder sb = new StringBuilder();
//
// for(int i = 0; i < this.size; ++i) {
// sb.append(String.format("[ %s ]", this.memoryStack[this.size - 1 - i].toString()));
// if (i == 0) {
// sb.append(" <-- ");
// }
//
// sb.append("\n");
// }
//
// return sb.toString();
// }
// }