Created
May 30, 2017 01:03
-
-
Save porthunt/2d6323d0c1b912165882f4cdeec9dafb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# please define a very simple singly linked list | |
# list items: 4 -> 7 -> 2 | |
# item positions: 0 1 2 | |
# please write a function that, given a value and a position, inserts the value into the list at that position | |
# 4,7,2 => insert 9 at position 1 => 4,9,7,2 | |
class LinkedList(object): | |
def __init__(self): | |
HEAD = None | |
# 4,7,2 => insert 9 at position 0 => 9,4,7,2 | |
def insert(self, id, pos): # id: 9, pos: 0 | |
node = Node(id) # Node(9) -> Node.id:9, Node.pointer:None | |
# id = 9, pointer = None | |
if HEAD is None or pos == 0: | |
# -> HEAD:4, 7, 2 -> HEAD:9 -> 4 -> 7 -> 2 | |
node.pointer = HEAD | |
HEAD = node | |
else: | |
aux = HEAD # aux:4 | |
old_node = HEAD #old_node:4 | |
i = 0 # 4 -> [9] -> 7 -> 2 | |
while aux.pointer is not None: | |
old_node.pointer = node # old_node: 4 -> Node:9 | |
node.pointer = aux | |
break | |
old_node = aux | |
aux = aux.pointer | |
class Node(object): | |
def __init__ (self, id): | |
self.id = id | |
self.pointer = None |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment