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)
ci 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