This document discusses various common data structures, including their definitions, examples, and basic operations. It begins by defining an abstract data type and explaining that a data structure provides one way to implement an ADT by organizing data. Then it provides examples of common data structures like queues, stacks, binary search trees, lists, arrays, linked lists, graphs, and hashing. For each it briefly explains what it is, potential applications, and some basic operations that can be performed on it.
2. Agenda:
Abstract Data Type (ADT).
What is the Data Structure ?
Data Structure examples :
Queue.
Stack.
Binary Search Tree(BST).
Lists.
Arrays.
Linked List.
Graph.
Hashing.
3. Abstract Data Type (ADT).
An ADT is fully described by a domain of values
together with a set of operations to manipulate
these values.
Ex: point = {{(a,b) : a, b belongs to R, {create, translate, rotate,
scale} }
Ex: set = { { a collection of well defined and distinct objects} {isEmpty,
numElements, union, intersection,} }
4. What is the Data Structure?
A data structure is one way of implementing an ADT.
The way in which the data is organized affects the
performance of a program for different tasks.
Computer programmers decide which data structures
to use based on the nature of the data and the
processes that need to be performed on that data.
An ADT can have several different data structures.
A set might be implemented using a sorted dynamic
array, or using a binary search tree.
5. Data Structure examples :
Queue :
A
Queue is a list-like structure where elements
can be inserted into only one end and
removed from the other end in a First In First
Out (FIFO) fashion.
A
queue is a good data structure to use for
storing things that need to be kept in order,
such as a set of documents waiting to be
printed on a network printer.
7. Operations on the queue :
enqueue
dequeue
check whether the queue is full or not
size
check whether the queue is empty or not
isFull
remove a item from the front
isEmpty
add a new item at the rear
return the number of items in the queue
peek
return the front item
8. Stack :
A Stack is a list-like structure where
elements can be inserted or removed from
only one end in a Last In First Out (LIFO)
fashion.
An important application we make it with
stack : Undo / Redo .
Some languages, like LISP and Python, do not call
for stack implementations, since push and pop
functions are available for any list.
9. Last-in First-out (LIFO)
Push A, B, C
A
A
Pop C, B, A
B
A
B
A
C
B
A
The last one
pushed in is the
first one popped
out! (LIFO)
When we push entries
onto the stack and then
pop them out one by one,
we will get the entries in
reverse order.
11. Binary Search Tree (BST) :
A binary search tree is another
commonly used data structure. It is
organized like an upside down
tree.
Each spot on the tree, called a
node, holds an item of data along
with a left pointer and a right
pointer.
A binary tree is a good data
structure to use for searching
sorted data.
12. Lists :
A list is an ordered set of data.
It is often used to store objects
that are to be processed
sequentially.
A list can be used
to create a queue.
13. Arrays :
An array is an indexed set of
variables, such as dancer[1],
dancer[2], dancer[3],… It is like a
set of boxes that hold things.
An array is a set of
variables that each
store an item.
14. Arrays and Lists :
You can see the difference between
arrays and lists when you delete items.
15. Arrays and Lists
In a list, the missing spot is
filled in when something is
deleted but in the In
array, an empty variable
is left behind when
something is deleted.
16. Linked List :
A linked list is a collection of data in
which each element contains the
location of the next element—that is,
each element contains two parts: data
and link. The name of the list is the
same as the name of this pointer
variable.
17. Operations on linked lists :
The same operations we defined for an array can be applied to a linked list.
Searching a linked list :
Since nodes in a linked list have no names, we use two pointers, pre (for
previous) and cur (for current). At the beginning of the search, the pre
pointer is null and the cur pointer points to the first node. The search
algorithm moves the two pointers together towards the end of the list.
Figure 11.13 shows the movement of these two pointers through the list in
an extreme case scenario: when the target value is larger than any value in
the list.
18. Graphs:
List, BST, and Hash-Tables are used
for generic storage and search.
Graphs are useful to represent
relationships between data items.
Examples:
Modeling connectivity in
computer and communications
networks.
Representing a road map.
Modeling flow capacities in
transportation networks.
Modeling family relationships
and business or military
organizations.