Skip to content

Commit 951294a

Browse files
Add files via upload
1 parent dd00a32 commit 951294a

File tree

1 file changed

+104
-39
lines changed

1 file changed

+104
-39
lines changed

LinkedList.py

Lines changed: 104 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,112 @@
1-
class Element:
2-
def __init__(self, elem):
3-
self.element = elem
4-
# self.current = None
5-
self.next = None
6-
print(self.element, self.next)
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Created on Sat Nov 23 18:08:47 2019
74
8-
class LinkedList:
9-
def __init__(self, head=None):
10-
self.head = head
11-
# print(self.head)
5+
@author: Sinha
6+
"""
127

13-
def append_linked(self, value):
14-
current = self.head
15-
if self.head:
8+
class Node:
9+
# Constructor to create a Node
10+
def __init__(self, node):
11+
self.value = node
12+
self.next = None
13+
14+
class LinkedList:
15+
def __init__(self):
16+
self.head = None
17+
self.count = 0
18+
self.linked_list = {}
19+
20+
# Insert/append to Linked List
21+
def insert(self, element):
22+
# Node(elem)- can't have, bcoz it doesn't make elem
23+
# an object of Node/node but elem stays int/same data type as passed.
24+
if self.head == None:
25+
self.head = element
26+
# print("Head:{}".format(self.head.value))
27+
else:
28+
current = self.head
1629
while current.next:
1730
current = current.next
18-
# print(current)
19-
current.next = value
20-
# print(current.next)
21-
else:
22-
self.head = value
23-
def linked_list_view(self):
31+
current.next = element
32+
# print(current.next.value)
33+
34+
# Traverse a Linked List
35+
def traverse(self):
36+
current = self.head
37+
while current:
38+
print(current.value)
39+
current = current.next
40+
41+
# Determine len of Linked List
42+
def len_linked_list(self):
43+
self.count = 0
2444
current = self.head
25-
count = 0
26-
if self.head:
27-
print("if:{}".format(current.element))
28-
while current:
29-
print("while:{}".format(current.element))
45+
while current:
46+
self.linked_list[self.count] = current.value
47+
current = current.next
48+
self.count += 1
49+
return self.count
50+
51+
# Insert node at nth position
52+
def nth_insert(self, elem, n):
53+
len_ = self.len_linked_list()
54+
if n == 0:
55+
self.head = elem
56+
elif n <= len_:
57+
current = self.head
58+
for i in range(0, n-1):
3059
current = current.next
31-
32-
33-
def delete_first(self):
34-
if self.head:
35-
self.head = self.head.next
60+
elem.next = current.next
61+
current.next = elem
3662
else:
37-
self.head = None
38-
39-
def insert_first(self, new_element):
40-
if self.head:
41-
self.head, new_element.next = new_element, self.head
63+
return "Invalid n"
64+
65+
# Delete node from nth position
66+
def nth_delete(self, n):
67+
if n == 0:
68+
self.head = self.head.next
69+
elif n <= self.count:
70+
current = self.head
71+
for i in range(0, n-1):
72+
current = current.next
73+
current.next = current.next.next
74+
return self.len_linked_list()
4275
else:
43-
self.head = new_element
44-
45-
46-
47-
76+
return "Invalid position"
77+
78+
# Reverse Linked List - Iterative Method
79+
def reverse_iteration(self):
80+
prev = None
81+
current = self.head
82+
temp = self.head
83+
while current:
84+
temp = temp.next
85+
current.next = prev
86+
prev = current
87+
current = temp
88+
self.head = prev
89+
return self.traverse()
90+
91+
# Delete Linked List completely freeing memory
92+
def delete_list(self):
93+
prev, current = self.head, self.head
94+
while current:
95+
prev = current.next
96+
del current.value
97+
current = prev
98+
print("Linked List Deleted")
99+
100+
def recursion_traversal(self, node):
101+
if node:
102+
print(node.value)
103+
self.recursion_traversal(node.next)
104+
return
105+
106+
def reverse_recursion_traversal(self, node):
107+
if node:
108+
self.reverse_recursion_traversal(node.next)
109+
print(node.value)
110+
return
111+
112+

0 commit comments

Comments
 (0)