Skip to content

Commit f0ee0b9

Browse files
committed
Data Structure Implemented
1.Stack 2.Queue
1 parent 98cf034 commit f0ee0b9

File tree

5 files changed

+101
-1
lines changed

5 files changed

+101
-1
lines changed

algorithms/data_structure/__init__.py

Whitespace-only changes.

algorithms/data_structure/queue.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"""
2+
Queue data structure implemented:
3+
--------------------------------
4+
add : add element at last
5+
remove : remove element from front
6+
return value
7+
is_empty : 1 value returned on empty
8+
0 value returned on not empty
9+
size : return size of queue
10+
11+
Time Complexity: O(1)
12+
"""
13+
14+
from collections import deque
15+
16+
class queue :
17+
queue_list = deque([])
18+
def __init__(self):
19+
self.queue_list = deque([])
20+
def add(self,value):
21+
self.queue_list.append(value)
22+
def remove(self):
23+
return self.queue_list.popleft()
24+
def is_empty(self):
25+
if not len(self.queue_list):
26+
return 1
27+
else :
28+
return 0
29+
def size(self):
30+
return len(self.queue_list)
31+
32+
33+

algorithms/data_structure/stack.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""
2+
Stack data structure implemented:
3+
--------------------------------
4+
add : add element at last
5+
remove : remove element from last
6+
return value
7+
is_empty : 1 value returned on empty
8+
0 value returned on not empty
9+
size : return size of stack
10+
11+
Time Complexity: O(1)
12+
"""
13+
14+
class stack :
15+
stack_list = []
16+
def __init__(self):
17+
self.stack_list = []
18+
def add(self,value):
19+
self.stack_list.append(value)
20+
def remove(self):
21+
return self.stack_list.pop()
22+
def is_empty(self):
23+
if not len(self.stack_list):
24+
return 1
25+
else :
26+
return 0
27+
def size(self):
28+
return len(self.stack_list)
29+
30+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import unittest
2+
from ..data_structure import stack,queue
3+
4+
class TestStack(unittest.TestCase):
5+
"""
6+
Test Stack Implementation
7+
"""
8+
def test_stack(self):
9+
self.sta = stack.stack()
10+
self.sta.add(5)
11+
self.sta.add(8)
12+
self.sta.add(10)
13+
self.sta.add(2)
14+
15+
self.assertEqual(self.sta.remove(),2)
16+
self.assertEqual(self.sta.is_empty(),0)
17+
self.assertEqual(self.sta.size(),3)
18+
19+
class TestQueue(unittest.TestCase):
20+
"""
21+
Test Queue Implementation
22+
"""
23+
def test_queue(self):
24+
self.que = queue.queue()
25+
self.que.add(1)
26+
self.que.add(2)
27+
self.que.add(8)
28+
self.que.add(5)
29+
self.que.add(6)
30+
31+
self.assertEqual(self.que.remove(),1)
32+
self.assertEqual(self.que.size(),4)
33+
self.assertEqual(self.que.remove(),2)
34+
self.assertEqual(self.que.remove(),8)
35+
self.assertEqual(self.que.remove(),5)
36+
self.assertEqual(self.que.remove(),6)
37+
self.assertEqual(self.que.is_empty(),1)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def long_description():
1414
author='Nic Young',
1515
author_email='nryoung@gmail.com',
1616
license='BSD',
17-
packages=['algorithms', 'algorithms.sorting', 'algorithms.shuffling',
17+
packages=['algorithms', 'algorithms.data_structure','algorithms.sorting', 'algorithms.shuffling',
1818
'algorithms.searching', 'algorithms.math', 'algorithms.tests'],
1919
classifiers=[
2020
'Programming Language :: Python :: 2.7',],

0 commit comments

Comments
 (0)