Skip to content

Commit efc00ff

Browse files
committed
stack
1 parent aaaec6e commit efc00ff

File tree

3 files changed

+136
-0
lines changed

3 files changed

+136
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Stack(object):
2+
def __init__(self):
3+
self.items = []
4+
5+
def isEmpty(self):
6+
return not bool(self.items)
7+
8+
def push(self, value):
9+
self.items.append(value)
10+
11+
def pop(self):
12+
value = self.items.pop()
13+
if value:
14+
return value
15+
else:
16+
print("Stack is empty.")
17+
18+
def size(self):
19+
return len(self.items)
20+
21+
def peek(self):
22+
if self.items:
23+
return self.items[-1]
24+
else:
25+
print("Stack is empty.")
26+
27+
def __repr__(self):
28+
return f"{self.items}"
29+
30+
31+
if __name__ == '__main__':
32+
stack = Stack()
33+
print(f"스택이 비었나요? {stack.isEmpty()}")
34+
print("스택에 0-9까지의 항목을 추가합니다.")
35+
for i in range(10):
36+
stack.push(i)
37+
print(f"스택 크기: {stack.size()}")
38+
print(f"peek: {stack.peek()}")
39+
print(f"pop: {stack.pop()}")
40+
print(f"peek: {stack.peek()}")
41+
print(f"스택이 비었나요? {stack.isEmpty()}")
42+
print(stack)
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
class Node(object):
2+
def __init__(self, value=None, pointer=None):
3+
self.value = value
4+
self.pointer = pointer
5+
6+
7+
class Stack(object):
8+
def __init__(self):
9+
self.head = None
10+
11+
def isEmpty(self):
12+
return not bool(self.head)
13+
14+
def push(self, item):
15+
self.head = Node(item, self.head)
16+
17+
def pop(self):
18+
if self.head:
19+
node = self.head
20+
self.head = node.pointer
21+
return node.value
22+
else:
23+
print('Stack is empty.')
24+
25+
def peek(self):
26+
if self.head:
27+
return self.head.value
28+
else:
29+
print('Stack is empty.')
30+
31+
def size(self):
32+
node = self.head
33+
count = 0
34+
while node:
35+
count +=1
36+
node = node.pointer
37+
return count
38+
39+
def _printList(self):
40+
node = self.head
41+
while node:
42+
print(node.value, end=' ')
43+
node = node.pointer
44+
print()
45+
46+
47+
if __name__ == '__main__':
48+
stack = Stack()
49+
print(f"스택이 비었나요? {stack.isEmpty()}")
50+
print("스택에 0-9까지의 항목을 추가합니다.")
51+
for i in range(10):
52+
stack.push(i)
53+
stack._printList()
54+
print(f"스택 크기: {stack.size()}")
55+
print(f"peek: {stack.peek()}")
56+
print(f"pop: {stack.pop()}")
57+
print(f"peek: {stack.peek()}")
58+
print(f"스택이 비었나요? {stack.isEmpty()}")
59+
stack._printList()
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Queue(object):
2+
def __init__(self):
3+
self.items = []
4+
5+
def isEmpty(self):
6+
return not bool(self.items)
7+
8+
def enqueue(self, item):
9+
self.items.insert(0, item)
10+
11+
def dequeue(self):
12+
return self.items.pop()
13+
14+
def size(self):
15+
return len(self.items)
16+
17+
def peek(self):
18+
return self.items[-1]
19+
20+
def __repr__(self):
21+
return f"{self.items}"
22+
23+
24+
if __name__ == '__main__':
25+
queue = Queue()
26+
print("Is the queue empty? ", queue.isEmpty())
27+
print("Adding 0 to 10 in the queue...")
28+
for i in range(10):
29+
queue.enqueue(i)
30+
print("Queue size: ", queue.size())
31+
print("Queue peek : ", queue.peek())
32+
print("Dequeue...", queue.dequeue())
33+
print("Queue peek: ", queue.peek())
34+
print("Is the queue empty? ", queue.isEmpty())
35+
print(queue)

0 commit comments

Comments
 (0)