Data Structures I - Binus Repository

Download Report

Transcript Data Structures I - Binus Repository

Data Abstractions
Shyh-Kang Jeng
Department of Electrical Engineering/
Graduate Institute of Communication Engineering
National Taiwan University
1
Data Structures


Conceptual organization of data
Basic data structures


Homogeneous array
List
Stack
 Queue


Tree
2
List


A collection of entries that appear in a
sequential order
Examples





Class enrollment lists
“things-to-do” lists
Dictionaries
Sentences
Appear in both static and dynamic forms
3
Stacks



A list in which all insertions and deletions
are performed at the same end
A last-in, first-out (LIFO) structures
Push and pop
Top
B
A
C
4
Queue



A list in which all insertions are performed
at one end while all deletions are made at
the other
A first-in, first-out (FIFO) structure
Head (front) and tail (rear)
5
Organization Chart
6
File Structure of Windows
7
Trees
8
Trees

Nodes





Root
Terminal (leaf)
Parent, children, siblings
Subtrees
Depth
9
Data Abstraction


Explores ways in which users can be
shielded from the details of actual data
storage (memory cells and address) and
be allowed to access information as
though it were stored in a more
convenient form – Concept of abstraction
The term user can be either human or a
software module
10
Static vs. Dynamic Structures

Static structures



Shape and size of the structure do not change
over time
Easier to manage
Dynamic structures


Either shape or size of the structure changes
over time
Must deal with adding and deleting data
entries as well as finding the memory space
required by a growing data structure
11
Pointers


A memory cell (or perhaps a block of
memory cells) that contains the address of
another memory cell
Examples



Many programming languages include
pointers as a primitive data type


Program counter as an instruction pointer
URL
Allow the declaration, allocation, and
manipulation of pointers
Used to create dynamic data structures
12
Use of Pointers
13
Stack and Heap Space
Heap
Storage
Stack
Storage
14
Homogeneous Arrays
15
Two-Dimensional Array
16
Storage of a 2-D Array


Row major order vs. column major
order
Finding an entry in the i th row and j th
column of a c-column 2-D array stored
in row major order
x  c  (i  1)  ( j  1)
Address polynomial
17
Mini Review

Show how the array below would be
arranged in main memory when stored
in row major order
5
3
7
4
2
8
1
9
6
18
Answer

5 3 7 4 2 8 1 9 6
19
Mini Review


Give a formula for finding the entry
in the i th row and j th column of a
2-D array stored in column major
order
In C, C++, and Java, indices of arrays
start at 0 rather than 1. In this case
what address polynomial is used by the
translator to convert references of the
form Array[i][j] into memory
address?
20
Answers
x  r  ( j  1)  (i  1)
ci  j
21
Storing lists


Contiguous list = list stored in a
homogeneous array
Linked list = list in which each node
points to the next one


Head pointer = pointer to first entry in list
NIL pointer = non-pointer value used to
indicate end of list
22
Contiguous Lists
23
Contiguous List


Convenient storage structure when
implementing static lists
Inconvenient in dynamic cases

Delete a name


Move entries to keep the list in the same order
Add a name

Move the entire list to obtain an available block of
contiguous cells large enough for the expanded list
24
Linked List
25
Deleting an Entry
26
Inserting an Entry
27
A Stack in Memory
28
Operations on Queues
29
Circular Queues (1)
30
Circular Queues (2)
31
Mini Review

Using paper and pencil, keep a record of
the circular queue during the following
scenario. Assume that the block reserved
for the queue can contain only four entries.






Insert entries A, B, C
Remove two entries
Insert entries D, E
Remove an entry
Insert entry F
Remove an entry
32
Answer
H
A
H
T
B
C
H
B
T
T
E
E
F
C
H
C
T
T
C
H
H
T
C
D
E
T
H
H
D
E
D
D
T
F
33
Storing a binary tree

Linked structure



Each node = data cell + two child pointers
Accessed through a pointer to root node
Mapped to a contiguous array




A[1] = root node
A[2],A[3] = children of A[1]
A[4],A[5],A[6],A[7] = children of A[2] and A[3]
…
34
Binary Tree Node
35
Linked Storage System
36
Storage without Pointers
37
Inefficient Storage
38
Mini Review


Draw a diagram representing how the tree
below appears in memory when stored
using the left and right child pointers.
Draw another diagram showing how the
tree would appear in contiguous storage.
y
x
z
w
39
Answer
Y
Z
X
Y
X
NIL
Z
W
NILNIL
NILNIL
W
40
Manipulating data structures

Ideally, a data structure should be
manipulated solely by pre-defined
procedures.


Example: A stack typically needs at least
push and pop procedures.
The data structure along with these
procedures constitutes a complete abstract
tool.
41
Printing a Linked List
42
Binary Tree Package

Search for the presence of an entry



Use the binary search algorithm
Print the list in order
Insert a new entry
43
Ordered Tree
44
Search the Binary Tree
45
Search Binary Tree
46
Printing a Binary Tree
47
Mini Review

Draw a binary tree to store the list R, S, T,
U, V, W, X, Y, and Z for future searching
48
Answer
V
Y
T
S
R
X
U
Z
W
49
Printing a Tree in Order
50
Traversing a Binary Tree

Inorder traversal


Preorder traversal


Left – Root – Right
Root – Left – Right
Postorder traversal

Left – Right – Root
51
Inserting an Entry (1)
52
Inserting an Entry (2)
53
Inserting an Entry
54
User-Defined Types


Expressing an algorithm is often more
convenient if types other than those
provided as primitives in the programming
language
Many modern programming languages
allow programmers to define additional
data types, using the primitive types and
structures as building blocks
55
Customized data types



User-defined data type = template for a
heterogeneous structure
Abstract data type = user-defined data type
with methods for access and manipulation
Class = abstract data type with extra features



Characteristics can be inherited
Contents can be encapsulated
Constructor methods to initialize new objects
56
Customized Data Types
struct {
char Name[8];
int Age;
float SkillRating;
} Employee;
typedef struct {
char Name[8];
int Age;
float SkillRating;
} EmployeeType;
EmployeeType DistManager, SalesRep1, SalesRep2;
57
Declaration of Nodes of a Binary
Tree
typedef struct {
char data;
Node* left;
Node* right;
} Node;
Node* root;
58
C++ Class
59
Using Classes



StackOfIntegers StackOne(50);
StackOne.push(106);
int OldValue = StackOne.pop();
60
Standard Template Library


A collection of predefined classes in C++
that describe popular data structures
The programmer is thus relieved from the
task of describing these structures in
detail
61
Pointers in Machine Language


Machine language defined in Appendix C
Load data (immediate addressing)


Load address (direct addressing)


1RXY
Load through pointer (indirect addressing)



2RXY
DRXY
DR0S
Save through pointer

XY
S
ER0S
R
62
Expanding the Machine Language
to Take Advantage of Pointers
63
Loading a Register from a Memory
Cell Located by a Pointer in a
Register
64
Mini Review

Suppose the machine language has been
extended to include pointer operations.
Moreover, suppose register 8 contains the
pattern DB, the memory cell at address DB
contains the pattern CA, and the cell at address
A5 contains the pattern CA. What bit pattern
will be in register 5 immediately after executing
the following instructions:



15A5
25CA
D508
65
Answers



CA
CA
CA
66
Exercise

Review problems
2, 5, 8, 14, 16, 19, 24, 26, 30, 44
67