Skip to content

Commit 0466e95

Browse files
Add Data Structure "DoublyLL -- Pairs with Sum"
1 parent 293a2b5 commit 0466e95

File tree

3 files changed

+82
-1
lines changed

3 files changed

+82
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
class Node:
2+
def __init__(self, data):
3+
self.data = data
4+
self.next = None
5+
self.prev = None
6+
7+
8+
class DoublyLinkedList:
9+
def __init__(self):
10+
self.head = None
11+
12+
def append(self, data):
13+
new_node = Node(data)
14+
15+
if self.head is None:
16+
new_node.prev = None
17+
self.head = new_node
18+
else:
19+
cur = self.head
20+
while cur.next:
21+
cur = cur.next
22+
cur.next = new_node
23+
new_node.prev = cur
24+
new_node.next = None
25+
26+
def prepend(self, data):
27+
new_node = Node(data)
28+
29+
if self.head is None:
30+
new_node.prev = None
31+
self.head = new_node
32+
else:
33+
self.head.prev = new_node
34+
new_node.next = self.head
35+
self.head = new_node
36+
new_node.prev = None
37+
38+
def print_list(self):
39+
cur = self.head
40+
while cur:
41+
print(cur.data)
42+
cur = cur.next
43+
44+
def pairs_with_sum(self, sum_val):
45+
pairs = list()
46+
p = self.head
47+
q = None
48+
while p:
49+
q = p.next
50+
while q:
51+
if p.data + q.data == sum_val:
52+
pairs.append("(" + str(p.data) + ", " + str(q.data) + ")")
53+
q = q.next
54+
p = p.next
55+
56+
return pairs
57+
58+
59+
60+
61+
62+
dllist = DoublyLinkedList()
63+
dllist.append(1)
64+
dllist.append(2)
65+
dllist.append(3)
66+
dllist.append(4)
67+
dllist.append(5)
68+
69+
70+
dllist.print_list()
71+
print("\n")
72+
73+
X = dllist.pairs_with_sum(6)
74+
Y = dllist.pairs_with_sum(0)
75+
Z = dllist.pairs_with_sum(5)
76+
print(X)
77+
print(Y)
78+
print(Z)

Linked List/Doubly Linked List/Data Structures.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
02. Doubly Linked Lists -- Add Node Before/After
55
03. Doubly Linked Lists -- Delete Node
66
04. Doubly Linked Lists -- Reverse
7-
05. Doubly Linked Lists -- Remove Duplicates
7+
05. Doubly Linked Lists -- Remove Duplicates
8+
06. Doubly Linked Lists -- Pairs with Sum

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
24. Doubly Linked Lists -- Delete Node
2626
25. Doubly Linked Lists -- Reverse
2727
26. Doubly Linked Lists -- Remove Duplicates
28+
27. Doubly Linked Lists -- Pairs with Sum
29+
2830

2931

3032

0 commit comments

Comments
 (0)