1 / 20

Data Structures and Collections

Data Structures and Collections. Principles revisited . NET: Two libraries: System.Collections System.Collections.Generics. Choose and use a data structure, e.g. SortedDicitonary. Data Structures and Collections. Read and write (use) specifications.

jess
Download Presentation

Data Structures and Collections

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Data Structures and Collections Principles revisited .NET: Two libraries: System.Collections System.Collections.Generics

  2. Choose and use a data structure, e.g. SortedDicitonary Data Structures and Collections Read and write (use) specifications Choose and use an adt, e.g. IDictionary Data structure and algorithms application ADT class: Hash Table Search Tree ---- class Appl{ ---- IDictionarym; ----- m= new XXXDic(); interface: (e.g. IDictionary) Specification Know about

  3. Collections LibrarySystem.Collections Data structures in .NET are normally called Collections Are found in namespace System.Collections Compiled into mscorlib.dll assembly Uses object and polymorphism for generic containers. Deprecated! Classes: Array ArrayList Hashtable Stack Queue

  4. Collection Interfaces System.Collections implements a range of different interfaces in order to provide standard usage of different containers Classes that implements the same interface provides the same services Makes it easier to learn and to use the library Makes it possible to write generic code towards the interface Interfaces: ICollection IEnumerable IEnumerator IList IComparer IComparable

  5. ArrayList ArrayList stores sequences of elements. duplicate values are ok – position- (index-) based Elements are stored in an resizable array. Implements the IList interface public class ArrayList : IList, IEnumerable, ... { // IList services ... // additional services int Capacity { get... set... } void TrimToSize() int BinarySearch(object value) int IndexOf (object value, int startIndex) int LastIndexOf (object value, int startIndex) ... } control of memory in underlying array searching

  6. IList Interface IListdefineres sequences of elements Access through index public interface IList : ICollection { int Add (object value); void Insert(int index, object value); void Remove (object value); void RemoveAt(int index); void Clear (); bool Contains(object value); int IndexOf (object value); object this[int index] { get; set; } bool IsReadOnly { get; } bool IsFixedSize { get; } } add new elements remove containment testing read/write existing element (see comment) structural properties

  7. Hashtable Hashtable supports collections of key/value pairs keys must be unique, values holds any data stores object references at key and value GetHashCode method on key determine position in the table. Hashtable ages = new Hashtable(); ages["Ann"] = 27; ages["Bob"] = 32; ages.Add("Tom", 15); ages["Ann"] = 28; int a = (int) ages["Ann"]; create add update retrieve

  8. Hashtable Traversal Traversal of Hashtable each element is of type DictionaryEntry (struct) data is accessed using the Key and Value properties Hashtable ages = new Hashtable(); ages["Ann"] = 27; ages["Bob"] = 32; ages["Tom"] = 15; foreach (DictionaryEntry entry in ages) { string name = (string) entry.Key; int age = (int) entry.Value; ... } enumerate entries get key and value

  9. .NET 2:System.Collections.Generics (key, value) -pair ICollection<T> IList<T> LinkedList<T> IDictionary<TKey, TValue> List<T> SortedDictionary<TKey, TValue> Dictionary <TKey, TValue> Index able Array-based Balanced search tree Hashtabel

  10. Demos • Lists • Maps • LinkedList in C#

  11. How doestheywork? • Array-based list • Linked list Count Free (waste) used

  12. Dynamic vs. Static Data Structures • Array-Based Lists: • Fixed (static) size (waste of memory). • May be able to grown and shrink (ArrayList), but this is very expensive in running time (O(n)) • Provides direct access to elements from index (O(1)) • Linked List Implementations: • Uses only the necessary space (grows and shrinks as needed). • Overhead to references and memory allocation • Only sequential access: access by index requires searching (expensive: O(n))

  13. Keys are converted to indices in an array. A hash function, h maps a key to an integer, the hash code. The hash code is divided by the array size and the remainder is used as index If two or more keys gives the same index, we have a collision. Hashing

  14. Chaining • The array doesn’t hold the element itself, but a reference to a collection (a linked list for instance) of all colliding elements. • On search that list must be traversed

  15. Efficiency of Hashing • Worst case (maximum collisions): • retrieve, insert, delete all O(n) • Average number of collisions depends on the load factor, λ, not on table size λ = (number of used entries)/(table size) • But not on n. • Typically (linear probing): numberOfCollisionsavg = 1/(1 - λ) • Example: 75% of the table entries in use: • λ = 0.75: 1/(1-0.75) = 4 collisions in average (independent of the table size).

  16. When Hashing Is Inefficient • Traversing in key order. • Find smallest/largest key. • Range-search (Find all keys between high and low). • Searching on something else than the designated primary key.

  17. (Binary) Search Trees • Value based container: • The search tree property: • For any internal node: the value is greater than the value in the left child • For any internal node: the value is less than the value in the right child • Note the recursive nature of this definition: • It implies that all sub trees themselves are search trees • Every operation must ensure that the search tree property is maintained

  18. Example:A Binary Search Tree Holding Names

  19. InOrder:Traversal Visits Nodes in Sorted Order

  20. insert retrieve delete All operations depend on the depth of the tree If balanced: O(log n) Most libraries use a balanced version, for instance Red-Black Trees Efficiency

More Related