Data Organization - PowerPoint PPT Presentation

About This Presentation
Title:

Data Organization

Description:

Maintain the set of currently free men. Keep track of each person's preferences. Quickly find the highest-ranked woman to whom a man has not proposed yet ... – PowerPoint PPT presentation

Number of Views:63
Avg rating:3.0/5.0
Slides: 11
Provided by: vdou8
Category:
Tags: and | data | find | free | man | organization | people | woman

less

Transcript and Presenter's Notes

Title: Data Organization


1
Data Organization
  • Example 1 Heap storage management
  • Keep track of free chunks of memory
  • Example 2 A simple text editor
  • Maintain a sequence of lines
  • Example 3 Stable matching problem
  • Maintain the set of currently free men
  • Keep track of each person's preferences
  • Quickly find the highest-ranked woman to whom a
    man has not proposed yet
  • Quickly find whether a woman is engaged and to
    whom

2
Data Organization
  • All these examples have a common organizational
    model
  • A sequence of similar items
  • (memory blocks, lines, men/women)
  • Certain desired operations
  • find, insert, delete

3
The list ADT
  • Data
  • A collection of homogeneous elements arranged in
    a sequence
  • Operations
  • Insert
  • Delete
  • Find
  • Update
  • Retrieve
  • Length

4
The list ADT
  • Most operations refer to a certain position in
    the list. How will this be designed?
  • Maintain a "current" position?
  • Specify an index?
  • Specify a pointer to an element?
  • Specify a generalized pointer to an element?

5
The list data structure
  • Implementation 1 Contiguous memory
  • Use a dynamic array
  • How is each operation implemented?
  • How efficient is each operation?
  • Random access capability is good for retrieval if
    we use an index for element access
  • Important The list ADT does not provide random
    access.
  • We need to shift elements every time we insert or
    delete
  • We need to reallocate whenever the array fills up.

6
The list data structure
  • Implementation 2 Linked memory
  • Use a node structure to store the data and a
    pointer to the next node, to create a chain of
    nodes.
  • Uses more space than the array (due to the
    pointers) but insert/delete do not require
    shifting.
  • However, deleting requires us to traverse the
    whole list in order to access the predecessor of
    the node to be deleted.
  • Easy solution keep in mind the abstract image of
    a linked list!
  • Move the next node's contents into the one to be
    deleted, and then physically remove the next
    node.
  • We can use a similar trick for the insert
    operation
  • Does this work in all cases?

7
Other list flavors
  • Doubly-linked list
  • Each node has a pointer to its successor and its
    predecessor.
  • Faster insert/delete, but more space.
  • Circular list
  • The last node points back to the head.
  • Sorted list
  • Items stored in sorted order.
  • Which implementation provides faster operations?
    Array or linked memory?

8
Other list flavors
  • XOR list
  • A space saving list
  • Instead of both a previous and next pointer,
    store the XOR of the predecessor and successor.
  • Node B stores A XOR C
  • If you are at B and know the address of A, you
    can compute the address of C.
  • The list can be traversed in any direction,
    provided you know where you came from.
  • Interesting, but not very useful...

9
Other list flavors
  • Unrolled linked list
  • A space saving list
  • Store k data items in each node
  • It's a list of arrays
  • Reduces cache misses
  • Each node should be at least half-full
  • If a node is too empty after a delete, merge it
    with a neighbor.
  • If a node overflows after an insert, split it.

10
Other list flavors
  • Satellite list
  • An easily reversible list
  • Developed for use in TSP algorithms
  • Imagine each node as having two "satellites",
    north and south. A chain of pointers links all
    the northern satellites and another chain links
    all the southern ones.
  • Reversing part of the list requires changing only
    4 pointers.
  • Compare this to reversing a doubly-linked list.
Write a Comment
User Comments (0)
About PowerShow.com