Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /