class Node:
def __init__(self, value):
self.value = value
self.next = None
class LinkedList(object):
def __init__(self):
self.head = None
self.tail = None
def append(self, value):
new_node = Node(value)
if self.head is None:
self.head = new_node
self.tail = new_node
else:
self.tail.next = new_node
self.tail = new_node
def insert_at(self, idx, value):
new_node = Node(value)
ptr = self.head
cnt = 0
while ptr is not None and cnt < idx - 1:
ptr = ptr.next
cnt += 1
new_node.next = ptr.next
ptr.next = new_node
def delete_at(self, idx):
ptr = self.head
cnt = 0
while ptr is not None and cnt < idx - 1:
ptr = ptr.next
cnt += 1
ptr.next = ptr.next.next
ll = LinkedList()
ll.append(1)
ll.append(2)
ll.append(3)
ll.append(4)
ll.append(5)
ll.insert_at(3, 9)
def print_list(ll):
ptr = ll.head
while ptr:
print(ptr.value, end=' ')
ptr = ptr.next
print()
print_list(ll)
ll.delete_at(2)
print_list(ll)
class Node:
def __init__(self, value):
self.value = value
self.next = None
class LinkedList(object):
def __init__(self):
self.head = None
self.tail = None
def append(self, value):
new_node = Node(value)
if self.head is None:
self.head = new_node
self.tail = new_node
else:
self.tail.next = new_node
self.tail = new_node
def insert_at(self, idx, value):
new_node = Node(value)
ptr = self.head
cnt = 0
while ptr is not None and cnt < idx - 1:
ptr = ptr.next
cnt += 1
new_node.next = ptr.next
ptr.next = new_node
def delete_at(self, idx):
ptr = self.head
cnt = 0
while ptr is not None and cnt < idx - 1:
ptr = ptr.next
cnt += 1
ptr.next = ptr.next.next
ll = LinkedList()
ll.append(1)
ll.append(2)
ll.append(3)
ll.append(4)
ll.append(5)
ll.insert_at(3, 9)
def print_list(ll):
ptr = ll.head
while ptr:
print(ptr.value, end=' ')
ptr = ptr.next
print()
print_list(ll)
ll.delete_at(2)
print_list(ll)