Skip to content

Commit fc378ef

Browse files
committed
Linkdedlist
1 parent e8b8ace commit fc378ef

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed

Linkedlist/Linkedlist.ipynb

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 1,
6+
"metadata": {},
7+
"outputs": [
8+
{
9+
"name": "stdout",
10+
"output_type": "stream",
11+
"text": [
12+
"3 \n",
13+
"122 \n",
14+
"12 \n",
15+
"31 \n",
16+
"0\n"
17+
]
18+
}
19+
],
20+
"source": [
21+
"\n",
22+
"class Node(object):\n",
23+
"\n",
24+
"\tdef __init__(self, data):\n",
25+
"\t\tself.data = data;\n",
26+
"\t\tself.nextNode = None;\n",
27+
"\t\t\n",
28+
"class LinkedList(object):\n",
29+
"\n",
30+
"\tdef __init__(self):\n",
31+
"\t\tself.head = None;\n",
32+
"\t\tself.size = 0;\n",
33+
"\t\t\n",
34+
"\t# O(1) !!!\t\n",
35+
"\tdef insertStart(self, data):\n",
36+
"\t\n",
37+
"\t\tself.size = self.size + 1;\n",
38+
"\t\tnewNode = Node(data);\n",
39+
"\t\t\n",
40+
"\t\tif not self.head:\n",
41+
"\t\t\tself.head = newNode;\n",
42+
"\t\telse:\n",
43+
"\t\t\tnewNode.nextNode = self.head;\n",
44+
"\t\t\tself.head = newNode;\n",
45+
"\t\t\t\n",
46+
"\tdef remove(self, data):\n",
47+
"\t\n",
48+
"\t\tif self.head is None:\n",
49+
"\t\t\treturn;\n",
50+
"\t\t\t\n",
51+
"\t\tself.size = self.size - 1;\n",
52+
"\t\t\n",
53+
"\t\tcurrentNode = self.head;\n",
54+
"\t\tpreviousNode = None;\n",
55+
"\t\t\n",
56+
"\t\twhile currentNode.data != data:\n",
57+
"\t\t\tpreviousNode = currentNode;\n",
58+
"\t\t\tcurrentNode = currentNode.nextNode;\n",
59+
"\t\t\t\n",
60+
"\t\tif previousNode is None:\n",
61+
"\t\t\tself.head = currentNode.nextNode;\n",
62+
"\t\telse:\n",
63+
"\t\t\tpreviousNode.nextNode = currentNode.nextNode;\t\t\t\n",
64+
"\t\t\n",
65+
"\t# O(1)\t\n",
66+
"\tdef size1(self):\n",
67+
"\t\treturn self.size;\n",
68+
"\t\t\n",
69+
"\t# O(N) not good !!!\t\n",
70+
"\tdef size2(self):\n",
71+
"\t\t\n",
72+
"\t\tactualNode = self.head;\n",
73+
"\t\tsize = 0;\n",
74+
"\t\t\n",
75+
"\t\twhile actualNode is not None:\n",
76+
"\t\t\tsize+=1;\n",
77+
"\t\t\tactualNode = actualNode.nextNode;\n",
78+
"\t\t\t\n",
79+
"\t\treturn size;\n",
80+
"\t\t\n",
81+
"\t# O(N)\n",
82+
"\tdef insertEnd(self, data):\n",
83+
"\t\n",
84+
"\t\tself.size = self.size + 1;\n",
85+
"\t\tnewNode = Node(data);\n",
86+
"\t\tactualNode = self.head;\n",
87+
"\t\t\n",
88+
"\t\twhile actualNode.nextNode is not None:\n",
89+
"\t\t\tactualNode = actualNode.nextNode;\n",
90+
"\t\t\t\n",
91+
"\t\tactualNode.nextNode = newNode;\n",
92+
"\t\t\n",
93+
"\tdef traverseList(self):\n",
94+
"\t\n",
95+
"\t\tactualNode = self.head;\n",
96+
"\t\t\n",
97+
"\t\twhile actualNode is not None:\n",
98+
"\t\t\tprint(\"%d \" % actualNode.data);\n",
99+
"\t\t\tactualNode = actualNode.nextNode;\n",
100+
"\n",
101+
"\n",
102+
"\t\t\t\n",
103+
"linkedlist = LinkedList();\n",
104+
"\n",
105+
"linkedlist.insertStart(12);\n",
106+
"linkedlist.insertStart(122);\n",
107+
"linkedlist.insertStart(3);\n",
108+
"linkedlist.insertEnd(31);\n",
109+
"\n",
110+
"linkedlist.traverseList();\n",
111+
"\n",
112+
"linkedlist.remove(3);\n",
113+
"linkedlist.remove(12);\n",
114+
"linkedlist.remove(122);\n",
115+
"linkedlist.remove(31);\n",
116+
"\n",
117+
"print(linkedlist.size1());\n"
118+
]
119+
}
120+
],
121+
"metadata": {
122+
"kernelspec": {
123+
"display_name": "Python 3",
124+
"language": "python",
125+
"name": "python3"
126+
},
127+
"language_info": {
128+
"codemirror_mode": {
129+
"name": "ipython",
130+
"version": 3
131+
},
132+
"file_extension": ".py",
133+
"mimetype": "text/x-python",
134+
"name": "python",
135+
"nbconvert_exporter": "python",
136+
"pygments_lexer": "ipython3",
137+
"version": "3.7.4"
138+
}
139+
},
140+
"nbformat": 4,
141+
"nbformat_minor": 4
142+
}

0 commit comments

Comments
 (0)