C sharp data structures
Similarly ConcurrentBag, ConcurrentDictionary and ConcurrentStack are also available.
Partitioner and OrderablePartitioner provides a manner of partitioning data into multiple partitions.
A Blocking Collection provides a blocking and bounding capabilities for threadsafe collections that implement IProducerConsumerCollection<T>
BinaryTree and BinarySearchTree can be implemented with a generic Node<T> class.
public class Node<T>
{
public Node<T> Left {get; set;}
public Node<T> Right {get; set;}
public T data {get; set;}
}
}
and travesals can be written in a recursive way:
public PreorderTaversal (Node current)
{
if ( current != null)
{
Console.WriteLine(current.Value);
PreorderTraversal(current.Left);
PreorderTraversal(current.Right);
}
}
Here are some common data structures in C#
ArrayList: This is a dynamically sized array of objects that
implements the IList Interface. It works
by maintaining an internal array of objects that is replaced with a larger array
when it reaches its capacity of elements. It is very efficient at adding
elements since there is usually a free slot in the end but is inefficient at
inserting . Searching can be efficient if the BinarySearch method can be used
but you must Sort the array first.
BitArray: This is a dynamically sized array of Boolean values.
It is more memory efficient than simple array of bools because it uses only one
bit for each value whereas a bool array uses two bytes for each value.
Hashtable class: A Hashtable class is a standard dictionary
(key/value) data structure that also uses a hashing algorithm to store and
index values efficiently. The GetHashCode method is used for hashing. Any type
used as a key in the hashtable should return a good hash of the object’s
internal value.
Queue class: A Queue is a standard first in first out (FIFO)
data structure providing simple operations to enqueue, dequeue, peek etc.
SortedList class: A SortedList is a standard dictionary data
structure that uses a binary-chop search to index efficiently. SortedList
implements IDictionary.
Stack class: A stack class is a standard Last-in first-out
(LIFO) data structure.
StringCollection: A StringCollection
is a standard collection data structure for storing strings.
HashSet: A HashSet is a generic collection that contains no
duplicate elements and where the elements are in no particular order. The
capacity of the HashSet is the number of elements the object can hold.
LinkedList: A LinkedList is a general purpose linked list.
It supports enumerators and implements the ICollection interface, consistent
with other collection classes in the .Net framework.
SortedDictionary: A
sorted dictionary is a binary search tree and is very similar to the SortedList
but differs in execution speed and memory use.
ConcurrentQueue generic is used for thread safe queue operations and can be used safely by multiple threads. You could invoke multiple threads with the Parallel library i.e. Parallel.Invoke(action, action);Similarly ConcurrentBag, ConcurrentDictionary and ConcurrentStack are also available.
Partitioner and OrderablePartitioner provides a manner of partitioning data into multiple partitions.
A Blocking Collection provides a blocking and bounding capabilities for threadsafe collections that implement IProducerConsumerCollection<T>
BinaryTree and BinarySearchTree can be implemented with a generic Node<T> class.
public class Node<T>
{
public Node<T> Left {get; set;}
public Node<T> Right {get; set;}
public T data {get; set;}
}
}
and travesals can be written in a recursive way:
public PreorderTaversal (Node current)
{
if ( current != null)
{
Console.WriteLine(current.Value);
PreorderTraversal(current.Left);
PreorderTraversal(current.Right);
}
}
No comments:
Post a Comment