Skip to content

Commit ac75040

Browse files
authored
Merge pull request #178 from Aniket-Mishra/master
Structure changes and LinkedList added
2 parents 15b2124 + f2f2caa commit ac75040

File tree

9 files changed

+195
-0
lines changed

9 files changed

+195
-0
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Created on Thu Oct 3 15:54:30 2019
4+
5+
@author: mishr
6+
"""
7+
#doubly Linked List
8+
9+
class Node:
10+
11+
def __init__(self, data=None):
12+
13+
self.data = data
14+
self.next_node = None
15+
self.prev_node = None
16+
17+
class doubly_linked_list:
18+
19+
def __init__(self):
20+
self.head = Node()
21+
22+
def append(self, data):
23+
24+
new_node = Node(data)
25+
current = self.head
26+
while current.next_node != None:
27+
current = current.next_node
28+
29+
current.next_node = new_node
30+
new_node.prev_node = current
31+
new_node.next_node = None
32+
33+
def length(self):
34+
35+
current = self.head
36+
counter = 0
37+
while current.next_node != None:
38+
counter += 1
39+
current = current.next_node
40+
41+
return counter
42+
43+
def delete_at(self, index):
44+
if index >= self.length():
45+
print("Index Out Of bounds")
46+
return None
47+
current_index = 0
48+
current_node = self.head
49+
while True:
50+
last_node = current_node
51+
previous_node = current_node.prev_node
52+
current_node = current_node.next_node
53+
54+
if current_index == index:
55+
last_node.next_node = current_node.next_node
56+
last_node.prev_node = previous_node
57+
return
58+
current_index += 1
59+
60+
def get_value_at(self, index):
61+
62+
if index >= self.length():
63+
print("Index Out Of bounds")
64+
return None
65+
current_index = 0
66+
current_node = self.head
67+
while True:
68+
current_node = current_node.next_node
69+
if current_index == index:
70+
return current_node.data
71+
current_index += 1
72+
73+
def display(self):
74+
75+
node_list = []
76+
current = self.head
77+
78+
while current.next_node is not None:
79+
80+
current = current.next_node
81+
node_list.append(current.data)
82+
83+
print(node_list)
84+
85+
if __name__ == '__main__':
86+
87+
dll = doubly_linked_list()
88+
89+
dll.append(1)
90+
dll.append(2)
91+
dll.append(3)
92+
dll.append(4)
93+
dll.append(5)
94+
dll.append(6)
95+
dll.append(7)
96+
dll.append(8)
97+
dll.display()
98+
dll.delete_at(3)
99+
dll.display()
100+
dll.get_value_at(4)
101+
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Created on Thu Oct 3 15:13:10 2019
4+
5+
@author: mishr
6+
"""
7+
8+
#Singly Linked List
9+
10+
class Node:
11+
12+
def __init__(self, data=None, next_node=None):
13+
self.data = data
14+
self.next_node = next_node
15+
16+
17+
18+
class singly_linked_list:
19+
def __init__(self):
20+
21+
self.head = Node()
22+
23+
def append(self, data):
24+
25+
new_node = Node(data)
26+
current = self.head
27+
while current.next_node != None:
28+
current = current.next_node
29+
current.next_node = new_node
30+
31+
def length(self):
32+
33+
current = self.head
34+
counter = 0
35+
while current.next_node != None:
36+
counter += 1
37+
current = current.next_node
38+
39+
return counter
40+
41+
def get_value_at(self, index):
42+
43+
if index >= self.length():
44+
print("Index Out Of bounds")
45+
return None
46+
current_index = 0
47+
current_node = self.head
48+
while True:
49+
current_node = current_node.next_node
50+
if current_index == index:
51+
return current_node.data
52+
current_index += 1
53+
54+
def delete_at(self, index):
55+
56+
if index >= self.length():
57+
print("Index Out Of bounds")
58+
return None
59+
current_index = 0
60+
current_node = self.head
61+
while True:
62+
last_node = current_node
63+
current_node = current_node.next_node
64+
if current_index == index:
65+
last_node.next_node = current_node.next_node
66+
return
67+
current_index += 1
68+
69+
def display(self):
70+
71+
node_list = []
72+
current = self.head
73+
while current.next_node != None:
74+
current = current.next_node
75+
node_list.append(current.data)
76+
77+
print(node_list)
78+
79+
if __name__ == '__main__':
80+
my_list = singly_linked_list()
81+
my_list.append(0)
82+
my_list.append(1)
83+
my_list.append(2)
84+
my_list.append(3)
85+
my_list.append(4)
86+
my_list.append(5)
87+
my_list.display()
88+
my_list.get_value_at(3)
89+
my_list.delete_at(3)
90+
my_list.display()
91+
#can use loop to take inputs
92+
93+
94+
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)