We can use this class to represent a linked list node:
class Node: def __init__(self, val, next): self.val = val self.next = next
Write a function has_adjacent(n) that takes a pointer to the first Node in a linked list and returns True if any two adjacent elements in the list have the same value, otherwise False.
2. Prepend
You
are given a class LinkedList
with an attribute
head
that
points to the head of a linked list of
Node
objects:
class LinkedList: def __init__(self, head): self.head = head
Write a method that prepends a value to a LinkedList.
Write a
method that appends a value to a LinkedList
.
Write a method
that deletes the first node (if any) in a LinkedList
.
Write a method
that deletes the last node (if any) in a LinkedList
.
Write a function split() that takes a pointer to the the first Node in a linked list and splits the list into two linked lists of roughly equal size. Return a pair containing these lists. The elements in the returned lists may appear in any order.
Write a function merge() that takes pointer to the first Nodes of two sorted lists and combines them into a single sorted list.
Write a function merge_sort() that performs a merge sort on a linked list, returning a pointer to a sorted list. Do not allocate any new list nodes while sorting.