Skip to main content

Simple implementation of data structures for python

Project description

pyfds

Simple implementaion of data structures (DS) for python

Content

  • linked list
  • doubly linked list
  • sorted linked list
  • stack
  • queue
  • priority queue
  • binary search tree
  • utils // (package)

Content of utils

  • node // single pointer node
  • dnode // double pointer node
  • tnode // tree pointer node
  • pair

how to import utils

from pyfds.utils import *
pair = Pair()
or
import pyfds.utils
pair = utils.Pair()

Classes

  • List // linked list
  • DList // doubly linked list
  • SList // sorted linked list
  • Stack // stack
  • Queue // queue
  • PQueue // priority queue
  • BST // binary search tree

API

List

Properties

  • first(self) // TODO: return the data in the first node
  • last(self) // TODO: return the data in the last node

Methodes

  • insert(self, data, pos=0) // TODO: add node in the entered position (pos=0 => add in the begining)
  • append(self, data) // TODO: add node in the end
  • delete(self, data) // TODO: delete all nodes hav the entered data
  • remove(self, pos=0) // TODO: return and remove node in the entered position (pos=0 => remove first node, pos=-1 => remove last node)

DList

Properties

  • first // TODO: return the data in the first node
  • last // TODO: return the data in the last node

Methodes

  • add_begin(self, data) // TODO: add a node to the begin
  • add_fin(self, data) // TODO: add a node to the fin
  • delete(self, data) // TODO: delete all nodes hav the entered data
  • remove(self, pos=0) // TODO: return and remove node in the entered position (pos=0 => remove first node, pos=-1 => remove last node)

SList

Properties

  • first // TODO: return the data in the first node
  • last // TODO: return the data in the last node

Methodes

  • append(self, data) // TODO: add a node to the list in a sorted way
  • delete(self, data) // TODO: delete all nodes hav the entered data
  • remove(self, pos=0) // TODO: return and remove node in the entered position (pos=0 => remove first node, pos=-1 => remove last node)

Note

  • the (reverse, sort, exchange) are not supported in this DS because they brake the rule of the Sorted Linked List

Stack

Properties

  • top // TODO: return the data in the first node

Methodes

  • push(self, data) // TODO: add a node to the top
  • pop(self) // TODO: return and remove the node in the top

Queue

Properties

  • front // TODO: return the data in the first node
  • back // TODO: return the data in the last node

Methods

  • enqueue(self, data) // TODO: add a node to the end
  • dequeue(self) // TODO: return and remove the first element

PQueue

Properties

  • front // TODO: return the data in the first node
  • back // TODO: return the data in the last node

Methods

  • enqueue(self, data) // TODO: add a node to the queue in a sorted way
  • dequeue(self) // TODO: return and remove the first element

Methods for all DSs

  • str(self) // USE: print([DS_name]) // TODO: display the DS
  • len(self) // USE: len([DS_name]) // TODO: return the lenth of the DS
  • empty(self) // TODO: return True if the DS is empty
  • clear(self) // TODO: clear the DS
  • find(self, data) // TODO: return the number of how many the entered data found in the DS
  • reverse(self) // TODO: return the reverse of the DS
  • sort(self) // TODO: sort the DS if its not sorted
  • exchange(self, n) // TODO: circular permutation for n time

classmethods for all DSs

// USE: [DS] = [DS_type].method([DS1], [DS2])
// Examples:
>>> stck3 = Stack.merge(stck1, stck2)
>>> Stack.swap([DS1], [DS2])
the tow DS parameters must be from the same DS

  • merge(cls, DS1, DS2) // TODO: return the merge of two DS in new DS
  • swap(cls, DS1, DS2) // TODO: swap between DS1 and DS2 (DS1 will be DS2 and DS2 will be DS1) =======

pyfds

Simple implementaion of data structures (DS) for python

Content

  • linked list
  • doubly linked list
  • sorted linked list
  • stack
  • queue
  • priority queue
  • utils // (package)

Content of utils

  • node // single pointer node
  • dnode // double pointer node
  • pair

how to import utils

from pyfds.utils import *
pair = Pair()
or
import pyfds.utils
pair = utils.Pair()

Classes

  • List // linked list
  • DList // doubly linked list
  • SList // sorted linked list
  • Stack // stack
  • Queue // queue
  • PQueue // priority queue

API

List

Properties

  • first(self) // TODO: return the data in the first node
  • last(self) // TODO: return the data in the last node

Methodes

  • insert(self, data, pos=0) // TODO: add node in the entered position (pos=0 => add in the begining)
  • append(self, data) // TODO: add node in the end
  • delete(self, data) // TODO: delete all nodes hav the entered data
  • remove(self, pos=0) // TODO: return and remove node in the entered position (pos=0 => remove first node, pos=-1 => remove last node)

DList

Properties

  • first // TODO: return the data in the first node
  • last // TODO: return the data in the last node

Methodes

  • add_begin(self, data) // TODO: add a node to the begin
  • add_fin(self, data) // TODO: add a node to the fin
  • delete(self, data) // TODO: delete all nodes hav the entered data
  • remove(self, pos=0) // TODO: return and remove node in the entered position (pos=0 => remove first node, pos=-1 => remove last node)

SList

Properties

  • first // TODO: return the data in the first node
  • last // TODO: return the data in the last node

Methodes

  • append(self, data) // TODO: add a node to the list in a sorted way
  • delete(self, data) // TODO: delete all nodes hav the entered data
  • remove(self, pos=0) // TODO: return and remove node in the entered position (pos=0 => remove first node, pos=-1 => remove last node)

Note

  • the (reverse, sort, exchange) are not supported in this DS because they brake the rule of the Sorted Linked List

Stack

Properties

  • top // TODO: return the data in the first node

Methodes

  • push(self, data) // TODO: add a node to the top
  • pop(self) // TODO: return and remove the node in the top

Queue

Properties

  • front // TODO: return the data in the first node
  • back // TODO: return the data in the last node

Methods

  • enqueue(self, data) // TODO: add a node to the end
  • dequeue(self) // TODO: return and remove the first element

PQueue

Properties

  • front // TODO: return the data in the first node
  • back // TODO: return the data in the last node

Methods

  • enqueue(self, data) // TODO: add a node to the queue in a sorted way
  • dequeue(self) // TODO: return and remove the first element

BST

Properties

  • number_of_nodes // TODO: return the number total of the nodes in the DS
  • min // TODO: return the min of the DS
  • max // TODO: return the max of the DS

Methods

  • empty(self) // TODO: return True if the DS is empty
  • clear(self) // TODO: clear the DS
  • pre_order(self) // TODO: show the DS in pre order
  • in_order(self) // TODO: show the DS in in order
  • post_order(self) // TODO: show the DS in post order
  • append(self, data) // TODO: append a new node to the DS
  • find(self, data) // TODO: return the number of how many the entered data found in the DS
  • parent(self, data) // TODO: return parent node of the element // Note: its return the node not the data
  • predecessor(self, data) // TODO: return the predecessor of the element // Note: its return the node not the data
  • successor(self, data) // TODO: return the successor of the element // Note: its return the node not the data
  • delete(self, data) // TODO: delete the node of the element from the DS and replace it with successor

Methods for all DSs except bst

  • str(self) // USE: print([DS_name]) // TODO: display the DS
  • len(self) // USE: len([DS_name]) // TODO: return the lenth of the DS
  • empty(self) // TODO: return True if the DS is empty
  • clear(self) // TODO: clear the DS
  • find(self, data) // TODO: return the number of how many the entered data found in the DS
  • reverse(self) // TODO: return the reverse of the DS
  • sort(self) // TODO: sort the DS if its not sorted
  • exchange(self, n) // TODO: circular permutation for n time

classmethods for all DSs except bst

// USE: [DS] = [DS_type].method([DS1], [DS2])
// Examples:
>>> stck3 = Stack.merge(stck1, stck2)
>>> Stack.swap([DS1], [DS2])
the tow DS parameters must be from the same DS

  • merge(cls, DS1, DS2) // TODO: return the merge of two DS in new DS
  • swap(cls, DS1, DS2) // TODO: swap between DS1 and DS2 (DS1 will be DS2 and DS2 will be DS1)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py-fds-3.2.0.tar.gz (7.3 kB view hashes)

Uploaded Source

Built Distribution

py_fds-3.2.0-py3-none-any.whl (23.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page