-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstack.py
70 lines (62 loc) · 1.62 KB
/
stack.py
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
from dlist import DoubleList
class Stack:
"""
Implementacija steka.
"""
def __init__(self):
"""
Inicijalizacija steka: inicijalno je prazan. Atribut u kome cuvamo
podatke bice dvostruko spregnuta lista.
"""
self._list = DoubleList()
def push(self, data):
"""
Dodavanje elementa na vrh steka.
"""
self._list.append(data)
def pop(self):
"""
Skida element sa vrha steka i vraca ga kao rezultat. Ako je stek prazan
vraca None.
"""
size = self._list.size()
if size == 0:
return None
data = self._list.tail.data
self._list.removeIndex(size-1)
return data
def peek(self):
"""
Vraca element sa vrha steka bez skidanja. Ako je stek prazan vraca None.
"""
size = self._list.size()
if size == 0:
return None
return self._list.tail.data
def clear(self):
"""
Uklanja sve elemente sa steka.
"""
self._list.clear()
def values(self):
"""
Vraca sadrzaj steka u obliku klasicne Python liste.
"""
return self._list.values()
if __name__ == '__main__':
stek = Stack()
stek.push(1)
stek.push(2)
stek.push(3)
print(stek.values())
value = stek.peek()
print("Peeked:", value)
value = stek.pop()
print("Popped:", value)
print(stek.values())
value = stek.pop()
print("Popped:", value)
print(stek.values())
value = stek.pop()
print("Popped:", value)
print(stek.values())