Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 12 Abstract Data Type.

Similar presentations


Presentation on theme: "Chapter 12 Abstract Data Type."— Presentation transcript:

1 Chapter 12 Abstract Data Type

2 OBJECTIVES After reading this chapter, the reader should be able to:
Understand the concept of an abstract data type (ADT). Understand the concept of a linear list as well as its operations and applications. Understand the concept of a stack as well as its operations and applications. Understand the concept of a queue as well as its operations and applications. Understand the concept of a tree as well as its operations and applications. Understand the concept of a graph as well as its operations and applications.

3 12.1 BACKGROUND

4 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.

5 Note: The concept of abstraction means: 1. You know what a data type can do How it is done is hidden.

6 Queue problem Queue simulation enqueuing dequeuing queue

7 Note: Abstract Data Type Declaration of data Declaration of operations Encapsulation of data and operations

8 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.

9 Model for ADT Figure 12-1

10 12.2 LINEAR LISTS

11 Linear list Figure 12-2 Linear List is a list in which each element has a unique successor.

12 Categories of linear lists
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.

13 Insertion in a general linear list with ordered data
Figure 12-4

14 Deletion from a linear list
Figure 12-5 Deletion from a linear list

15 Retrieval from a linear list
Figure 12-6 Retrieval from a linear list

16 Traversal of a linear list
Figure 12-7 Traversal is an operation in which all elements in the list are processed sequentially, one by one.

17 Implementation Two common methods: Array Linked list

18 12.3 STACKS

19 Three representations of a stack
Figure 12-8 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.

20 Push operation in a stack
Figure 12-9

21 Pop operation in a stack
Figure 12-10

22 Example 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) Solution

23 Implementation Applications Two common methods: Reversing data Parsing
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

24 12.4 QUEUES

25 Queue representation Queues
Figure 12-12 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.

26 Enqueue operation Figure 12-13

27 Dequeue operation Figure 12-14

28 Example 2 Show 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) Solution

29 Implementation Two common methods: Array Linked list (more common) Applications found in virtually every OS and network and in countless other areas.

30 12.5 TREES

31 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.

32 Representation of a tree
Figure 12-16 Representation of a tree

33 Trees Leaf – Internal nodes – a node that is not a root or a 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.

34 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.

35 Figure 12-17 Tree terminology Height : 3

36 Figure 12-18 Subtrees

37 12.6 BINARY TREES

38 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

39 Binary tree Figure 12-19

40 Examples of binary trees
Figure 12-20

41 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.

42 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

43 Depth-first traversal of a binary tree
Figure 12-21 NLR LNR LRN

44 Preorder traversal of a binary tree
Figure 12-22 A, B, C, D, E, F

45 Inorder traversal of a binary tree
Figure 12-23 C, B, D, A, E, F

46 Postorder traversal of a binary tree
Figure 12-24 C, D, B, F, E, A

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

48 Implementation Applications
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: Infix expression Postfix expression – produced by Postorder traversal Prefix expression – produced by Preorder traversal

49 Expression tree Infix expression: Prefix expression: + * a + b c d
Figure 12-26 Infix expression: Prefix expression: + * a + b c d Postfix expression: a b c + * d +

50 12.7 GRAPHS

51 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.

52 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.

53 Directed and undirected graphs
Figure 12-27

54 Add vertex Figure 12-28

55 Delete vertex Figure 12-29

56 Add edge Figure 12-30

57 Delete edge Figure 12-31

58 Find vertex Figure 12-32

59 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.

60 Depth-first traversal of a graph
Figure 12-33 在不同的資料結構下,即使起始點相同,產生的順序亦有所不同。

61 Breadth-first traversal of a graph
Figure 12-34 在不同的資料結構下,即使起始點相同,產生的順序亦有所不同。

62 Implementation Applications Two common methods: Network
Array (adjacency matrix) Linked list (adjacency list) Applications Network 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.

63 Graph implementations
Figure 12-35: Part I Weight (e.g. distance between networks in an internetwork)

64 Graph implementations
Figure 12-35: Part 2

65 1 2 3 4 5 6 7

66 10 10 20 30 20 40


Download ppt "Chapter 12 Abstract Data Type."

Similar presentations


Ads by Google