Skip to content

Commit 2d8c18a

Browse files
committedAug 10, 2014
queue implemented with link list
1 parent 46ec5c5 commit 2d8c18a

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
 

Diff for: ‎llistqueue.py

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Implementation of the Queue ADT using a linked list.
2+
class Queue:
3+
# Creates an empty queue.
4+
def __init__( self ):
5+
self._qhead = None
6+
self._qtail = None
7+
self._count = 0
8+
9+
# Returns True if the queue is empty.
10+
def isEmpty( self ):
11+
return self._qhead is None
12+
13+
# Returns the number of items in the queue.
14+
def __len__( self ):
15+
return self._count
16+
17+
# Adds the given item to the queue.
18+
def enqueue( self, item ):
19+
node = _QueueNode( item )
20+
if self.isEmpty():
21+
self._qhead = node
22+
else:
23+
self._qtail.next = node
24+
self._qtail = node
25+
self._count += 1
26+
27+
# Removes and returns the first item in the queue.
28+
def dequeue( self ):
29+
assert not self.isEmpty(), "Cannot dequeue from an empty queue."
30+
node = self._qhead
31+
if self._qhead is self._qtail:
32+
self._qtail = None
33+
self._qhead = self._qhead.next
34+
self._count -= 1
35+
return node.item
36+
37+
# Private storage class for creating the linked list ndoes.
38+
class _QueueNode( object ):
39+
def __init__( self, item ):
40+
self.item = item
41+
self.next = None
42+
43+
if __name__ == '__main__':
44+
Q = Queue()
45+
Q.enqueue( 28 )
46+
#Q.enqueue( 19 )
47+
#Q.enqueue( 45 )
48+
#Q.enqueue( 13 )
49+
#Q.enqueue( 7 )
50+
51+
for i in range( len(Q) ):
52+
cur_item = Q.dequeue()
53+
print cur_item,
54+
print ''
55+
print Q._qhead, Q._qtail

0 commit comments

Comments
 (0)
Please sign in to comment.