Skip to content

Commit 5e54a27

Browse files
committed
Added a singly linked list
1 parent bcee2c9 commit 5e54a27

File tree

3 files changed

+72
-63
lines changed

3 files changed

+72
-63
lines changed

linear_datastructures/__init__.py

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
class Node(object):
2+
def __init__(self, data=None):
3+
self.data = data
4+
self.next = None
5+
6+
def __repr__(self):
7+
return str(self.data)
8+
9+
class LinkedList(object):
10+
def __init__(self, iterable=[]):
11+
self.head = None
12+
self.size = 0
13+
for item in iterable:
14+
self.append(item)
15+
16+
def __repr__(self):
17+
(current, nodes) = self.head, []
18+
while current:
19+
nodes.append(str(current))
20+
current = current.next
21+
return "->".join(nodes)
22+
23+
def __len__(self):
24+
return self.size
25+
26+
def __iter__(self):
27+
current = self.head
28+
while current:
29+
yield current
30+
current = current.next
31+
raise StopIteration
32+
33+
def __contains__(self, data):
34+
tmp = self.head
35+
found = False
36+
while tmp and not found:
37+
if data == tmp.data:
38+
found = True
39+
else:
40+
tmp = tmp.next
41+
return found
42+
43+
def append(self, data):
44+
tmp = Node(data)
45+
tmp.next = self.head
46+
self.head = tmp
47+
self.size += 1
48+
49+
def getHead(self):
50+
return self.head
51+
52+
def getTail(self):
53+
tmp = self.head
54+
while tmp.next:
55+
tmp = tmp.next
56+
return tmp
57+
58+
def delete(self, data):
59+
tmp = self.head
60+
prev = None
61+
found = False
62+
while tmp and not found:
63+
if data == tmp.data:
64+
found = True
65+
else:
66+
prev = tmp
67+
tmp = tmp.next
68+
if found:
69+
if prev == None:
70+
self.head = self.head.next
71+
else:
72+
prev.next = tmp.next

misc/temp.cpp

-63
This file was deleted.

0 commit comments

Comments
 (0)