Chapter 12 Abstract Data Type. Understand the concept of an abstract data type (ADT). Understand the concept of a linear list as well as its operations.

Post on 18-Jan-2016

225 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

Chapter 12

AbstractData Type

Understand the concept of an Understand the concept of an abstract data type (ADT).abstract data type (ADT).

Understand the concept of a Understand the concept of a linear listlinear list as well as its operations as well as its operations and applications.and applications.

After reading this chapter, the reader should After reading this chapter, the reader should be able to:be able to:

OOBJECTIVESBJECTIVES

Understand the concept of a Understand the concept of a stackstack as well as its operations as well as its operations and applications. and applications.

Understand the concept of a Understand the concept of a queuequeue as well as its operations as well as its operations and applications.and applications.

Understand the concept of a Understand the concept of a treetree as well as its operations as well as its operations and applications.and applications.Understand the concept of a Understand the concept of a graphgraph as well as its operations as well as its operations and applications.and applications.

BACKGROUNDBACKGROUNDBACKGROUNDBACKGROUND12.112.1

Abstract Data Type (ADT) An Abstract Data Type (ADT)

is a data structure and a collection of functions which operate on the data structure.

Stack – The operations new(), push(v, S), top(S), and pop(S) may be defined with axiomatic semantics as following. new() returns a stack pop(push(v, S)) = S top(push(v, S)) = v where S is a stack and v is a value.

The concept of The concept of abstractionabstraction means:means:1. You know 1. You know whatwhat a data type a data type can do.can do.2. 2. HowHow it is done is it is done is hiddenhidden. .

Note:Note:

Queue problem Queue simulation

queueenqueuing dequeuing

Abstract Data TypeAbstract Data Type

1.1.Declaration of Declaration of datadata

2.2.Declaration of Declaration of operationsoperations

3.3.EncapsulationEncapsulation of of datadata and and operationsoperations

Note:Note:

Stack problem Stack –

The operations new(), push(S, v), top(S), and popoff(S) may be defined with axiomatic semantics as following. new() returns a stack popoff(push(S, v)) = S top(push(S, v)) = v

where S is a stack and v is a value.

The pop operation is a combination of top, to return the top value, and popoff, to remove the top value.

Figure 12-1 Model for ADT

LINEARLINEARLISTSLISTS

LINEARLINEARLISTSLISTS

12.212.2

Figure 12-2 Linear list

Linear List is a list in which each element has a unique successor.

Figure 12-3 Categories of linear lists

Data can be inserted and deleted anywhere.

Data can only be inserted and deleted at the ends of the structure.

Figure 12-4 Insertion in a general linear list

with ordered data

Figure 12-5 Deletion from a linear list

Figure 12-6 Retrieval from a linear list

Figure 12-7 Traversal of a linear list

Traversal is an operation in which all elements in the list are processed sequentially, one by one.

Implementation

Two common methods:ArrayLinked list

STACKSSTACKSSTACKSSTACKS

12.312.3

Figure 12-8 Three representations of a stack

Stacks A restricted linear list in which all additions and

deletions are made at one end, called the top. A LIFO (Last In, First Out) data structure.

Figure 12-9 Push operation in a stack

Figure 12-10 Pop operation in a stack

Example 1Example 1

Show the result of the following operations on a stack S.push (S , 10)push (S , 12)push (S , 8)if not empty (S), then pop (S)push (S , 2)

SolutionSolution

Implementation Two common methods:

Array Linked list (more common)

Applications Reversing data

1,2,3,4 → 4,3,2,1

Parsing Unmatched parentheses in an algebraic expression

Postponing data Postfix: ab+c* → (a+b)*c,

abc+* → a*(b+c)

Backtracking steps Computer gaming

QUEUESQUEUESQUEUESQUEUES12.412.4

Figure 12-12 Queue representation

Queues A restricted linear list in which data can only be

inserted at one end (rear) and deleted from the other end (front).

A FIFO (First In, First Out) data structure.

Figure 12-13 Enqueue operation

Figure 12-14 Dequeue operation

Example 2Example 2Show the result of the following operations on a queue Q.enqueue (Q , 23)if not empty (Q), dequeue (Q)enqueue (Q , 20)enqueue (Q , 19)if not empty (Q), dequeue (Q)

SolutionSolution

Implementation Two common methods:

Array Linked list (more common)

Applicationsfound in virtually every OS and network and in countless other areas.

TREESTREESTREESTREES12.512.5

Trees A Tree consists of

a finite set of elements called Nodes a finite set of directed lines, called Branches, that connect the nodes

Degree of a node – number of branches associated with the node. Indegree branch Outdegree branch

Root – The first node of a tree Indegree : 0

Other nodes – Indegree : 1

All nodes – outdegree : 0, 1 or more.

Figure 12-16

Representation of a tree

Trees Leaf –

Outdegree : 0 Internal nodes –

a node that is not a root or a leaf. Parent –

A node with successors outdegree : > 0

Child – A node with a predecessor indegree : 1

Siblings – two or more nodes with the same parent.

Ancestor – any node in the path from the root to the node.

Descendant – any node in the path from the node to a leaf.

Trees Path –

a sequence of nodes in which each node is adjacent to the next one.

Level of a node – its distance from the root. Root : 0

Height (Depth) of the tree – the level of the leaf in the longest path from the root plus 1. Subtree –

any connected structure below the root.

Figure 12-17

Tree terminology

Height : 3

Figure 12-18

Subtrees

BINARYBINARYTREESTREES

BINARYBINARYTREESTREES

12.612.6

Binary Trees

Binary tree – A tree in which no node can have more than two subtrees.

Null tree - A tree with no node. Height of a Binary Tree – (with N nodes)

Hmax = N Hmin = [log2N] +1

# of nodes of a binary tree – (Given height H) Nmin = H Nmax = 2H - 1

Figure 12-19 Binary tree

Figure 12-20 Examples of binary trees

Balanced Trees

The distance of a node from the root determines how efficiently it can be located.

Balance Factor of a Binary Tree – is the difference in height between its left and right subtrees.B = HL - HR

A binary tree is balanced if the height of its subtrees differs by no more than 1 (B = -1, 0, or +1) and its subtrees are also balanced.

A

B C

D

F

E

Binary Tree Traversal

Binary Tree Traversal each node of the tree be processed once and only once in a predetermined sequence.

Depth-First Traversal – Preorder Traversal (NLR) – Inorder Traversal (LNR) – Postorder Traversal (LRN) – Need a stack

Breadth-First Traversal – process all of the children of a node before proceeding

with the next level. Need a queue

Figure 12-21 Depth-first traversal of a binary tree

NLR LNR LRN

Figure 12-22 Preorder traversal of a binary tree

A, B, C, D, E, F

Figure 12-23Inorder traversal of a binary tree

C, B, D, A, E, F

Figure 12-24Postorder traversal of a binary tree

C, D, B, F, E, A

Figure 12-25 Breadth-first traversal of a binary tree

Implementation A binary tree is normally implemented as a linked list.

Applications Expression tree –

a binary tree with the following properties: Each leaf is an operand The root and internal nodes are operators. Subtrees are subexpressions, with the root being an operator.

Three different expression formats:1. Infix expression

2. Postfix expression – produced by Postorder traversal

3. Prefix expression – produced by Preorder traversal

Figure 12-26 Expression tree

• Infix expression:

• Prefix expression: + * a + b c d • Postfix expression: a b c + * d +

GRAPHSGRAPHSGRAPHSGRAPHS12.712.7

Graphs A Graph consists of

A set of vertices (sing. vertex) and A set of lines (connecting pairs of vertices)

Directed graph (digraph) – each line has a direction to its successor - arc

Undirected graph – each line has no direction – edge

Adjacent vertices (neighbors) –two vertices directly connected by a line

Path –a sequence of vertices in which each vertex is adjacent to the next one.

Cycle –a path consisting of at least three vertices that starts and ends with the same vertex.

Graphs

Two vertices are said to be connected if there is a path between them.

A graph is said to be connected (suppressing direction) if there is a path from any vertex to any other vertex.

A directed graph is strongly connected if there is a path from each vertex to every other vertex.

A directed graph is weekly connected if at least two vertices are not connected.

Figure 12-27 Directed and undirected graphs

Figure 12-28 Add vertex

Figure 12-29 Delete vertex

Figure 12-30Add edge

Figure 12-31Delete edge

Figure 12-32 Find vertex

Traverse Graph

You must somehow ensure that you process the data in each vertex only once.

Visited flag

Two standard graph traversals Depth-first traversal –

you process a vertex’s descendants before you move to an adjacent vertex.

Breadth-first traversal – you process all adjacent vertices of a vertex before going to the next level.

Figure 12-33 Depth-first traversal of a graph

•在不同的資料結構下,即使起始點相同,產生的順序亦有所不同。

Figure 12-34 Breadth-first traversal of a graph

•在不同的資料結構下,即使起始點相同,產生的順序亦有所不同。

Implementation Two common methods:

Array (adjacency matrix) Linked list (adjacency list)

ApplicationsNetwork

Weighted graph - a graph with weighted lines.

Minimum Spanning Tree A spanning tree

is a tree that contains all of the vertices in the graph. A minimum spanning tree

is a spanning tree such that the sum of its weights is the minimum.

Figure 12-35: Part I Graph implementations

Weight (e.g. distance between networks in an internetwork)

Figure 12-35: Part 2 Graph implementations

1 2

3 4 5 6

7

0

10 10

40 20

2030

top related