class LNode:
def __init__(self, elem, next_=None):
self.elem = elem
self.next = next_
class LinkedListUnderUnderflow(ValueError):
pass
def insert_element_at_list_head():
head = LNode(0)
q = LNode(13)
q.next = head.next
head = q
print(head)
def single_link_table():
llist = LNode(1)
p = llist
for i in range(2, 11):
p.next = LNode(i)
p = p.next
p = llist
while p:
p = p.next
return llist
def add_element(llist_, elem_):
length = get_length_LList(llist)
p = find_element_by_index(llist_, length - 1)
n = LNode(elem_)
p.next = n
print(generate_LList(llist_))
def find_element_by_index(llist_, index_):
p = llist_
if index_ < 0 or index_ > get_length_LList(llist_) - 1:
raise LinkedListUnderUnderflow()
while p and index_ > 0:
p = p.next
index_ -= 1
if p:
return p
def find_element_by_element(p, elem_):
counter = 0
while p:
if p.elem == elem_:
return p
counter += 1
p = p.next
return -1
def delete_element_in_table_head(llist):
p = llist
if p:
p = p.next
llist = p
print(generate_LList(llist))
def delement_element(llist_, index_):
p = find_element_by_element(llist_, index_ - 1)
if p:
p.next = p.next.next
print(generate_LList(llist_))
def get_length_LList(llist):
counter = 0
p = llist
while p:
counter += 1
p = p.next
return counter
def generate_LList(p):
tem_list = []
while p:
tem_list.append(p.elem)
p = p.next
return tem_list
if __name__ == '__main__':
llist = single_link_table()
add_element(llist, 12)