670 likes | 692 Views
Learn the concepts and applications of linear lists, stacks, queues, trees, and graphs as abstract data types. Understand operations on these data structures and their implementations using arrays and linked lists.
E N D
Chapter 12 AbstractData Type
OBJECTIVES 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. Understand the concept of an abstract data type (ADT). After reading this chapter, the reader should be able to:
12.1 BACKGROUND
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.
Note: The concept of abstraction means:1. You know what a data type can do.2. How it is done is hidden.
Queue problem • Queue simulation enqueuing dequeuing queue
Note: • Abstract Data Type • Declaration of data • Declaration of operations • Encapsulation of data and operations
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.
Model for ADT Figure 12-1
12.2 LINEAR LISTS
Linear list Figure 12-2 • Linear Listis a list in which each element has a unique successor.
Figure 12-3 Categories of linear lists • Data can be inserted and deletedanywhere. • Data can only be inserted and deleted at the ends of the structure.
Insertion in a general linear list with ordered data Figure 12-4
Figure 12-5 Deletion from a linear list
Figure 12-6 Retrieval from a linear list
Traversal of a linear list Figure 12-7 • Traversalis an operation in which all elements in the list are processed sequentially, one by one.
Implementation • Two common methods: • Array • Linked list
12.3 STACKS
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.
Push operation in a stack Figure 12-9
Pop operation in a stack Figure 12-10
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
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
12.4 QUEUES
Queue representation 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.
Enqueue operation Figure 12-13
Dequeue operation Figure 12-14
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
Implementation • Two common methods: • Array • Linked list (more common) • Applicationsfound in virtually every OS and network and in countless other areas.
12.5 TREES
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 pathfrom the root to the node. • Descendant – any node in the pathfrom 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
12.6 BINARY TREES
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
Binary tree Figure 12-19
Examples of binary trees Figure 12-20
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 balancedif 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 E F
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
Depth-first traversal of a binary tree Figure 12-21 • NLR LNR LRN
Preorder traversal of a binary tree Figure 12-22 • A, B, C, D, E, F
Inorder traversal of a binary tree Figure 12-23 • C, B, D, A, E, F
Postorder traversal of a binary tree Figure 12-24 • 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: • Infix expression • Postfix expression – produced by Postorder traversal • Prefix expression – produced by Preorder traversal
Expression tree Figure 12-26 • Infix expression: • Prefix expression: + * a + b c d • Postfix expression: a b c + * d +