Skip to content

Commit 8358058

Browse files
committed
Add py linked list
1 parent c347f4d commit 8358058

File tree

3 files changed

+62
-1
lines changed

3 files changed

+62
-1
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'''
2+
CLRS Section 10.2, p. 238
3+
'''
4+
class LinkedList:
5+
def __init__(self, head=None):
6+
self.head = head
7+
8+
def list_search(self, k):
9+
x = self.head
10+
while x is not None and x.key != k:
11+
x = x.next
12+
return x
13+
14+
def list_insert(self, x):
15+
x.next = self.head
16+
if self.head is not None:
17+
self.head.prev = x
18+
self.head = x
19+
x.prev = None
20+
21+
def list_delete(self, x):
22+
if x.prev is not None:
23+
x.prev.next = x.next
24+
else:
25+
self.head = x.next
26+
if x.next is not None:
27+
x.next.prev = x.prev

python/main.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
'''
55

66
# import utilities (ADTs)
7-
from utilities import A
7+
from utilities import A, ListNode
88

99
# ----- SORTING ALGORITMS ----- #
1010
print('\n|----- SORTING ALGORITHMS ----|')
@@ -233,3 +233,32 @@
233233
print('after head_enqueue(8):', Q.Q)
234234
Q.tail_dequeue()
235235
print('after tail_dequeue():', Q.Q)
236+
237+
# CLRS Section 10.2 - Linked List
238+
from data_structures.p238_linked_list import LinkedList
239+
240+
print('\nSection 10.2 - Linked List')
241+
242+
L = LinkedList()
243+
L.list_insert(ListNode(1))
244+
L.list_insert(ListNode(4))
245+
L.list_insert(ListNode(16))
246+
L.list_insert(ListNode(9)) # cf. Figure 10.3, p. 237
247+
L.list_insert(ListNode(25))
248+
print('\nafter list_insert(25):'
249+
, L.head.key, '->'
250+
, L.head.next.key, '->'
251+
, L.head.next.next.key, '->'
252+
, L.head.next.next.next.key, '->'
253+
, L.head.next.next.next.next.key, '->'
254+
, L.head.next.next.next.next.next
255+
)
256+
delete_node = L.list_search(4)
257+
L.list_delete(delete_node)
258+
print('after list_delete(4):'
259+
, L.head.key, '->'
260+
, L.head.next.key, '->'
261+
, L.head.next.next.key, '->'
262+
, L.head.next.next.next.key, '->'
263+
, L.head.next.next.next.next
264+
)

python/utilities.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,8 @@
99
# A is a list ADT, represented by a Python list
1010
A = []
1111

12+
class ListNode:
13+
def __init__(self, key, prev=None, next=None):
14+
self.key = key
15+
self.prev = prev
16+
self.next = next

0 commit comments

Comments
 (0)