mirror of
https://github.com/donnemartin/interactive-coding-challenges
synced 2026-01-05 17:08:02 +00:00
Updated Node and LinkedList to allow setting the next pointer on init, or when appending a node. This is useful for circular linked list problems.
This commit is contained in:
@@ -9,8 +9,7 @@
|
|||||||
"* [Clarifying Questions](#Clarifying-Questions)\n",
|
"* [Clarifying Questions](#Clarifying-Questions)\n",
|
||||||
"* [Test Cases](#Test-Cases)\n",
|
"* [Test Cases](#Test-Cases)\n",
|
||||||
"* [Algorithm](#Algorithm)\n",
|
"* [Algorithm](#Algorithm)\n",
|
||||||
"* [Code](#Code)\n",
|
"* [Code](#Code)"
|
||||||
"* [Pythonic-Code](#Pythonic-Code)"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -155,15 +154,15 @@
|
|||||||
"%%writefile linked_list.py\n",
|
"%%writefile linked_list.py\n",
|
||||||
"\n",
|
"\n",
|
||||||
"class Node(object):\n",
|
"class Node(object):\n",
|
||||||
" def __init__(self, data):\n",
|
" def __init__(self, data, next_node=None):\n",
|
||||||
" self.next = None\n",
|
" self.next = next_node\n",
|
||||||
" self.data = data\n",
|
" self.data = data\n",
|
||||||
" \n",
|
" \n",
|
||||||
" def __str__(self):\n",
|
" def __str__(self):\n",
|
||||||
" return self.data\n",
|
" return self.data\n",
|
||||||
"\n",
|
"\n",
|
||||||
"class LinkedList(object):\n",
|
"class LinkedList(object):\n",
|
||||||
" def __init__(self, head):\n",
|
" def __init__(self, head=None):\n",
|
||||||
" self.head = head\n",
|
" self.head = head\n",
|
||||||
" \n",
|
" \n",
|
||||||
" def insert_to_front(self, data):\n",
|
" def insert_to_front(self, data):\n",
|
||||||
@@ -176,10 +175,10 @@
|
|||||||
" node.next = self.head\n",
|
" node.next = self.head\n",
|
||||||
" self.head = node\n",
|
" self.head = node\n",
|
||||||
" \n",
|
" \n",
|
||||||
" def append(self, data):\n",
|
" def append(self, data, next_node=None):\n",
|
||||||
" if data is None:\n",
|
" if data is None:\n",
|
||||||
" return\n",
|
" return\n",
|
||||||
" node = Node(data)\n",
|
" node = Node(data, next_node)\n",
|
||||||
" if self.head is None:\n",
|
" if self.head is None:\n",
|
||||||
" self.head = node\n",
|
" self.head = node\n",
|
||||||
" else:\n",
|
" else:\n",
|
||||||
|
|||||||
@@ -1,23 +1,15 @@
|
|||||||
|
|
||||||
class Node(object):
|
class Node(object):
|
||||||
def __init__(self, data):
|
def __init__(self, data, next_node=None):
|
||||||
self.next = None
|
self.next = next_node
|
||||||
self.data = data
|
self.data = data
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.data
|
return self.data
|
||||||
|
|
||||||
class LinkedList(object):
|
class LinkedList(object):
|
||||||
def __init__(self, head):
|
def __init__(self, head=None):
|
||||||
self.head = head
|
self.head = head
|
||||||
|
|
||||||
def __len__(self):
|
|
||||||
curr = self.head
|
|
||||||
counter = 0
|
|
||||||
while curr is not None:
|
|
||||||
counter += 1
|
|
||||||
curr = curr.next
|
|
||||||
return counter
|
|
||||||
|
|
||||||
def insert_to_front(self, data):
|
def insert_to_front(self, data):
|
||||||
if data is None:
|
if data is None:
|
||||||
@@ -29,10 +21,10 @@ class LinkedList(object):
|
|||||||
node.next = self.head
|
node.next = self.head
|
||||||
self.head = node
|
self.head = node
|
||||||
|
|
||||||
def append(self, data):
|
def append(self, data, next_node=None):
|
||||||
if data is None:
|
if data is None:
|
||||||
return
|
return
|
||||||
node = Node(data)
|
node = Node(data, next_node)
|
||||||
if self.head is None:
|
if self.head is None:
|
||||||
self.head = node
|
self.head = node
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user