src.pydasa.structs.lists.sllt#
Module for the custom SingleLinkedList data structure in PyDASA. Essential for Dimensional Analysis and Data Science operations.
- Classes:
SingleLinkedList: Implements a single linked list with methods for insertion, deletion, and traversal.
IMPORTANT: based on the implementations proposed by the following authors/books:
Algorithms, 4th Edition, Robert Sedgewick and Kevin Wayne.
Data Structure and Algorithms in Python, M.T. Goodrich, R. Tamassia, M.H. Goldwasser.
Classes#
SingleLinkedList implements a single linked list data structure for PyDASA. |
Module Contents#
- class src.pydasa.structs.lists.sllt.SingleLinkedList#
Bases:
Generic[pydasa.structs.types.generics.T]SingleLinkedList implements a single linked list data structure for PyDASA.
- Parameters:
Generic (T) – Generic type for a Python data structure.
- Returns:
- a generic single linked list data structure with the following attributes:
cmp_function: function to compare elements in the list.
key: key to identify the elements in the list.
first: reference to the first node of the list.
last: reference to the last node of the list.
_size: size of the list.
- Return type:
- cmp_function: Callable[[pydasa.structs.types.generics.T, pydasa.structs.types.generics.T], int] | None = None#
Customizable comparison function for SingleLinkedList elements. Defaults to dflt_cmp_function_lt() from PyDASA, but can be overridden by the user.
- key: str | None = '_idx'#
Customizable key name for identifying elements in the SingleLinkedList. Defaults to DFLT_DICT_KEY = ‘_id’ from PyDASA, but can be overridden by the user.
- iodata: List[pydasa.structs.types.generics.T] | None = None#
Optional Python list for loading external data intho the SingleLinkedList. Defaults to None but can be provided during creation.
- __post_init__()#
__post_init__() Initializes the SingleLinkedList after creation by setting attributes like cmp_function, key, first, last, and iodata.
NOTE: Special method called automatically after object creation.
- Return type:
None
- default_compare(elm1, elm2)#
- default_compare() Default comparison function for SingleLinkedList elements. Compares two elements and returns:
0 if they are equal,
1 if the first is greater,
-1 if the first is smaller.
- Parameters:
elm1 (Any) – First element to compare.
elm2 (Any) – Second element to compare.
- Returns:
Comparison result.
- Return type:
- property size: int#
size() Property to retrieve the number of elements in the SingleLinkedList.
- Returns:
number of elements in the SingleLinkedList.
- Return type:
- property empty: bool#
empty() Property to check if the SingleLinkedList is empty.
- Returns:
True if the SingleLinkedList is empty, False otherwise.
- Return type:
- clear()#
clear() clears the SingleLinkedList by removing all elements and resetting the size to 0.
NOTE: This method is used to empty the SingleLinkedList without deleting the object itself.
- Return type:
None
- prepend(elm)#
prepend() adds an element to the beginning of the SingleLinkedList.
- Parameters:
elm (T) – element to be added to the beginning of the structure.
- Return type:
None
- append(elm)#
append() adds an element to the end of the SingleLinkedList.
- Parameters:
elm (T) – element to be added to the end of the structure.
- Return type:
None
- insert(elm, pos)#
insert() adds an element to the SingleLinkedList at a specific position.
- Parameters:
elm (T) – element to be added to the structure.
pos (int) – position where the element will be added.
- Raises:
IndexError – error if the structure is empty.
IndexError – error if the position is invalid.
TypeError – error if the element type is invalid.
- Return type:
None
- property first: pydasa.structs.types.generics.T#
first Property to read the first element of the SingleLinkedList.
- Raises:
IndexError – error if the structure is empty.
- Returns:
the first element of the SingleLinkedList.
- Return type:
T
- property last: pydasa.structs.types.generics.T#
last Property to read the last element of the SingleLinkedList.
- Raises:
Exception – error if the structure is empty.
- Returns:
the last element of the SingleLinkedList.
- Return type:
T
- get(pos)#
get() retrieves an element from the SingleLinkedList at a specific position.
- Parameters:
pos (int) – position of the element to be retrieved.
- Raises:
IndexError – error if the structure is empty.
IndexError – error if the position is invalid.
- Returns:
the element at the specified position in the SingleLinkedList.
- Return type:
T
- __getitem__(pos)#
__getitem__() retrieves an element from the SingleLinkedList at a specific position.
NOTE: This method is used to access the elements of the SingleLinkedList using the square brackets notation.
- Parameters:
pos (int) – position of the element to be retrieved.
- Raises:
IndexError – error if the structure is empty.
IndexError – error if the position is invalid.
- Returns:
the element at the specified position in the SingleLinkedList.
- Return type:
Optional[T]
- pop_first()#
pop_first() removes the first element from the SingleLinkedList.
- Raises:
IndexError – error if the structure is empty.
- Returns:
the first element of the SingleLinkedList.
- Return type:
T
- pop_last()#
pop_last() removes the last element from the SingleLinkedList.
- Raises:
IndexError – error if the structure is empty.
- Returns:
the last element of the SingleLinkedList.
- Return type:
T
- remove(pos)#
remove() removes an element from the SingleLinkedList at a specific position.
- Parameters:
pos (int) – position of the element to be removed.
- Raises:
IndexError – error if the structure is empty.
IndexError – error if the position is invalid.
- Returns:
the element removed from the SingleLinkedList.
- Return type:
T
- compare(elem1, elem2)#
compare() compares two elements using the comparison function defined in the SingleLinkedList.
- index_of(elm)#
index_of() searches for the first occurrence of an element in the SingleLinkedList. If the element is found, it returns its index; otherwise, it returns -1.
- Parameters:
elm (T) – element to search for in the SingleLinkedList.
- Returns:
index of the element in the SingleLinkedList or -1 if not found.
- Return type:
- update(new_data, pos)#
update() updates an element in the SingleLinkedList at a specific position.
- Parameters:
new_data (T) – new data to be updated in the structure.
pos (int) – position of the element to be updated.
- Raises:
IndexError – error if the structure is empty.
IndexError – error if the position is invalid.
- Return type:
None
- swap(pos1, pos2)#
swap() swaps two elements in the SingleLinkedList at specific positions.
- Parameters:
- Raises:
IndexError – error if the structure is empty.
IndexError – error if the first position is invalid.
IndexError – error if the second position is invalid.
- Return type:
None
- sublist(start, end)#
sublist() creates a new SingleLinkedList containing a sublist of elements from the original SingleLinkedList. The sublist is defined by the start and end indices.
NOTE: The start index is inclusive, and the end index is inclusive.
- Parameters:
- Raises:
IndexError – error if the structure is empty.
IndexError – error if the start or end index are invalid.
- Returns:
a new SingleLinkedList containing the sublist of elements.
- Return type:
- concat(other)#
concat() concatenates two SingleLinkedList objects. The elements of the second list are added to the end of the first list.
NOTE: The cmp_function and key attributes of the two lists must be the same.
- Parameters:
other (SingleLinkedList[T]) – the second SingleLinkedList to be concatenated.
- Raises:
- Returns:
the concatenated SingleLinkedList in the first list.
- Return type:
- clone()#
clone() creates a copy of the SingleLinkedList. The new list is independent of the original list.
NOTE: The elements of the new list are the same as the original list, but they are not references to the same objects.
- Returns:
a new SingleLinkedList with the same elements as the original list.
- Return type:
- __iter__()#
__iter__() to iterate over the elements of the SingleLinkedList. This method returns an iterator object that can be used to iterate over the elements of the list.
NOTE: This is used to iterate over the nodes of the list using a for loop.
- Returns:
an iterator object that can be used to iterate over the nodes of the list.
- Return type:
Iterator[T]
- __len__()#
__len__() to get the number of elements in the SingleLinkedList. This method returns the size of the list.
- Returns:
the number of elements in the SingleLinkedList.
- Return type:
- __str__()#
__str__() to get the string representation of the SingleLinkedList. This method returns a string with the elements of the list separated by commas.
- Returns:
string representation of the SingleLinkedList.
- Return type: