Skip to content

Commit e6d7620

Browse files
Merge pull request #1 from syedabdullahbukhari77/feature-branch
2 parents cf286fe + d260fbc commit e6d7620

File tree

2 files changed

+182
-1
lines changed

2 files changed

+182
-1
lines changed

Linked Lists/B1_Linked_List.ipynb

Lines changed: 182 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,172 @@
11
{
22
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 37,
6+
"metadata": {},
7+
"outputs": [],
8+
"source": [
9+
"# Define Node class\n",
10+
"class Node:\n",
11+
" def __init__(self, value):\n",
12+
" self.value = value\n",
13+
" self.next = None"
14+
]
15+
},
16+
{
17+
"cell_type": "code",
18+
"execution_count": 43,
19+
"metadata": {},
20+
"outputs": [],
21+
"source": [
22+
"class LinkedList:\n",
23+
" def __init__(self):\n",
24+
" self.head = None\n",
25+
" self.n = 0 # Keep track of length\n",
26+
"\n",
27+
" def __len__(self):\n",
28+
" return self.n\n",
29+
"\n",
30+
" def insert_head(self, value):\n",
31+
" new_node = Node(value)\n",
32+
" new_node.next = self.head\n",
33+
" self.head = new_node\n",
34+
" self.n += 1\n",
35+
"\n",
36+
" def insert_tail(self, value):\n",
37+
" new_node = Node(value)\n",
38+
" if self.head is None:\n",
39+
" self.head = new_node\n",
40+
" else:\n",
41+
" temp = self.head\n",
42+
" while temp.next:\n",
43+
" temp = temp.next\n",
44+
" temp.next = new_node\n",
45+
" self.n += 1\n",
46+
"\n",
47+
" def insert_at_index(self, index, value):\n",
48+
" if index < 0 or index > self.n:\n",
49+
" raise IndexError(\"Index out of range\")\n",
50+
" \n",
51+
" if index == 0:\n",
52+
" self.insert_head(value)\n",
53+
" return\n",
54+
" \n",
55+
" new_node = Node(value)\n",
56+
" temp = self.head\n",
57+
" for _ in range(index - 1):\n",
58+
" temp = temp.next\n",
59+
" new_node.next = temp.next\n",
60+
" temp.next = new_node\n",
61+
" self.n += 1\n",
62+
"\n",
63+
" def delete_node(self, value):\n",
64+
" if self.head is None:\n",
65+
" return\n",
66+
" \n",
67+
" if self.head.value == value:\n",
68+
" self.head = self.head.next\n",
69+
" self.n -= 1\n",
70+
" return\n",
71+
" \n",
72+
" temp = self.head\n",
73+
" while temp.next and temp.next.value != value:\n",
74+
" temp = temp.next\n",
75+
" \n",
76+
" if temp.next:\n",
77+
" temp.next = temp.next.next\n",
78+
" self.n -= 1\n",
79+
"\n",
80+
" def search(self, value):\n",
81+
" temp = self.head\n",
82+
" index = 0\n",
83+
" while temp:\n",
84+
" if temp.value == value:\n",
85+
" return index\n",
86+
" temp = temp.next\n",
87+
" index += 1\n",
88+
" return -1 # Not found\n",
89+
"\n",
90+
" def reverse(self):\n",
91+
" prev = None\n",
92+
" current = self.head\n",
93+
" while current:\n",
94+
" next_node = current.next\n",
95+
" current.next = prev\n",
96+
" prev = current\n",
97+
" current = next_node\n",
98+
" self.head = prev\n",
99+
"\n",
100+
" def display(self):\n",
101+
" temp = self.head\n",
102+
" while temp:\n",
103+
" print(temp.value, end=\" -> \")\n",
104+
" temp = temp.next\n",
105+
" print(\"None\")\n",
106+
"\n",
107+
"\n"
108+
]
109+
},
110+
{
111+
"cell_type": "code",
112+
"execution_count": 44,
113+
"metadata": {},
114+
"outputs": [
115+
{
116+
"name": "stdout",
117+
"output_type": "stream",
118+
"text": [
119+
"2 -> 4 -> 1 -> 3 -> None\n"
120+
]
121+
}
122+
],
123+
"source": [
124+
"L = LinkedList()\n",
125+
"L.insert_head(1)\n",
126+
"L.insert_head(2)\n",
127+
"L.insert_tail(3)\n",
128+
"L.insert_at_index(1, 4) # Insert 4 at index 1\n",
129+
"L.display() # Expected: 2 -> 4 -> 1 -> 3 -> None"
130+
]
131+
},
132+
{
133+
"cell_type": "code",
134+
"execution_count": 45,
135+
"metadata": {},
136+
"outputs": [
137+
{
138+
"name": "stdout",
139+
"output_type": "stream",
140+
"text": [
141+
"Index of 3: 3\n",
142+
"2 -> 1 -> 3 -> None\n"
143+
]
144+
}
145+
],
146+
"source": [
147+
"print(\"Index of 3:\", L.search(3)) # Expected: 3\n",
148+
"L.delete_node(4)\n",
149+
"L.display() # Expected: 2 -> 1 -> 3 -> None"
150+
]
151+
},
152+
{
153+
"cell_type": "code",
154+
"execution_count": 42,
155+
"metadata": {},
156+
"outputs": [
157+
{
158+
"name": "stdout",
159+
"output_type": "stream",
160+
"text": [
161+
"3 -> 1 -> 2 -> None\n"
162+
]
163+
}
164+
],
165+
"source": [
166+
"L.reverse()\n",
167+
"L.display()"
168+
]
169+
},
3170
{
4171
"cell_type": "code",
5172
"execution_count": null,
@@ -9,8 +176,22 @@
9176
}
10177
],
11178
"metadata": {
179+
"kernelspec": {
180+
"display_name": "Python 3",
181+
"language": "python",
182+
"name": "python3"
183+
},
12184
"language_info": {
13-
"name": "python"
185+
"codemirror_mode": {
186+
"name": "ipython",
187+
"version": 3
188+
},
189+
"file_extension": ".py",
190+
"mimetype": "text/x-python",
191+
"name": "python",
192+
"nbconvert_exporter": "python",
193+
"pygments_lexer": "ipython3",
194+
"version": "3.11.9"
14195
}
15196
},
16197
"nbformat": 4,
21 KB
Loading

0 commit comments

Comments
 (0)