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.
- _first: pydasa.structs.lists.ndlt.SLNode[pydasa.structs.types.generics.T] | None = None#
Reference to the first node of the SingleLinkedList.
- _last: pydasa.structs.lists.ndlt.SLNode[pydasa.structs.types.generics.T] | None = None#
Reference to the last node of the SingleLinkedList.
- 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.
- 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
- 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:
- _error_handler(err)#
_error_handler() to process the context (package/class), function name (method), and the error (exception) that was raised to format a detailed error message and traceback.
- Parameters:
err (Exception) – Python raised exception.
- Return type:
None
- _validate_type(elm)#
_validate_type() checks if the type of the element is valid. If the structure is empty, the type is valid. If the structure is not empty, the type must be the same as the first element in the list. This is used to check the type of the element before adding it to the list.