Data Structures

ShyhShyh-Kang Jeng Department of Electrical Engineering/ Graduate Institute of Communication Engineering National Taiwan University

1

Data Structures  

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
2

Static vs. Dynamic Structures 

Static structures  

Shape and size of the structure do not change over time Easier to manage 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
3 

Dynamic structures  

Pointers   A memory cell (or perhaps a block of memory cells) that contains the address of another memory cell Examples   Program counter as an instruction pointer URL  Many programming languages include pointers as a primitive data type  Allow the declaration. allocation. and manipulation of pointers 4  Used to create dynamic data structures .

Stack and Heap Space Heap Storage Stack Storage 5 .

Use of Pointers 6 .

Arrays 7 .

TwoTwo-Dimensional Array 8 .

column major order Finding an entry in the i th row and j th column of a c-column 2-D array stored 2in row major order x  c v (i  1)  ( j  1) Address polynomial 9 .Storage of a 2-D Array 2  Row major order vs.

Mini Review  Show how the array below would be arranged in main memory when stored in row major order 5 4 1 3 2 9 7 8 6 10 .

Answer  5 3 7 4 2 8 1 9 6 11 .

In this case what address polynomial is used by the translator to convert references of the form Array[i][j] into memory address? 12  . indices of arrays start at 0 rather than 1. and Java.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++.

Answers  r v ( j  1)  (i  1) vi  j 13 .

List   A collection of entries that appear in a sequential order Examples     Class enrollment lists ³things-to-do´ lists things-to-do´ Dictionaries Sentences  Appear in both static and dynamic forms 14 .

Contiguous Lists 15 .

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 Move the entire list to obtain an available block of contiguous cells large enough for the expanded list  Add a name  16 .

Linked List 17 .

Deleting an Entry 18 .

Inserting an Entry 19 .

Printing a Linked List 20 .

first-out (LIFO) structures last.Stacks    A list in which all insertions and deletions are performed at the same end A last-in.firstPush and pop Top B A C 21 .

Backtracking 22 .

Backtracking  Reverse the action taken to get in Top C B A Main Base 23 .

Print a List in Reverse Order (1) 24 .

Print a List in Reverse Order (2) 25 .

Procedure ReversePrint

26

A Stack in Memory

27

Procedures in Stack Systems 
   

Push an entry Pop an entry Testing for an empty stack Testing for a full stack Can be also implemented as a linked list

28

Your procedure should print an error message if the stack is empty.Mini Review   Based on the technique for implementing a stack in a contiguous block of cells. what condition indicates that the stack is empty? Design a procedure for popping an entry off the stack that is implemented with a stack pointer. 29 .

Answers   The stack pointer points to the cell immediately below the base of the stack procedure pop() if( the stack pointer points below the stack base ) then ( exit with error message ) Extract the entry pointed by the stack pointer. Adjust the stack pointer to point to the next lower stack entry 30 .

firstHead (front) and tail (rear) 31 . first-out (FIFO) structure first.Queue    A list in which all insertions are performed at one end while all deletions are made at the other A first-in.

Operations on Queues 32 .

Crawling Queue 33 .

Circular Queues (1) 34 .

Circular Queues (2) 35 .

C Remove two entries Insert entries D.       Insert entries A. Assume that the block reserved for the queue can contain only four entries. keep a record of the circular queue during the following scenario. E Remove an entry Insert entry F Remove an entry 36 .Mini Review  Using paper and pencil. B.

Answer H A B C H C T E H C T E F D H D E H E F 37 T H B C H C T T T T D H D T .

Organization Chart 38 .

Trees 39 .

File Structure of Windows 40 .

Trees  Nodes    Root Terminal (leaf) Parent. siblings   Subtrees Depth 41 . children.

Binary Tree Node 42 .

Linked Storage System 43 .

Storage without Pointers 44 .

Inefficient Storage 45 .

Mini Review   Draw a diagram representing how the tree below appears in memory when stored using the left and right child pointers. y x w 46 z . Draw another diagram showing how the tree would appear in contiguous storage.

Answer Y Z NILNIL X NIL W NILNIL Y X Z W 47 .

Binary Tree Package  Search for the presence of an entry  Use the binary search algorithm   Print the list in order Insert a new entry 48 .

Ordered Tree 49 .

Search the Binary Tree 50 .

Search Binary Tree 51 .

Printing a Binary Tree 52 .

X. S. U. W.Mini Review  Draw a binary tree to store the list R. and Z for future searching 53 . T. Y. V.

Answer V T S U X Y Z R W 54 .

Printing a Tree in Order 55 .

Traversing a Binary Tree  Inorder traversal  Left ± Root ± Right Root ± Left ± Right Left ± Right ± Root  Preorder traversal   Postorder traversal  56 .

Inserting an Entry (1) 57 .

Inserting an Entry (2) 58 .

Inserting an Entry 59 .

UserUser-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 60 .

61 . SalesRep1. SalesRep2. EmployeeType DistManager. } EmployeeType.Customized Data Types struct { char Name[8]. } Employee. int Age. float SkillRating. int Age. float SkillRating. typedef struct { char Name[8].

Node* right. } Node. 62 . Node* root. Node* left.Declaration of Nodes of a Binary Tree typedef struct { char data.

Classes  Data types   A predetermined storage system A collection of predefined operations Define both storage system and operations  Classes  63 .

C++ Class 64 .

pop(). StackOne. int OldValue = StackOne.Using Classes    StackOfIntegers StackOne(50).push(106). 65 .

Encapsulation    The private data and procedures can not be referenced directly from outside All access to the instance must be performed via the public method The integrity of these data types is protected from poorly conceived modifications 66 .

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

Expanding the Machine Language to Take Advantage of Pointers 68 .

Loading a Register from a Memory Cell Located by a Pointer in a Register 69 .

Pointers in Machine Language     Machine language defined in Appendix C Load data (immediate addressing)  2RXY 1RXY DRXY DR0S S Load address (direct addressing)  Load through pointer (indirect addressing)   XY  Save through pointer  ER0S R 70 .

Moreover. What bit pattern will be in register 5 immediately after executing the following instructions:    25A5 15CA D508 71 . the memory cell at address DB contains the pattern CA. suppose register 8 contains the pattern DB.Mini Review  Suppose the machine language has been extended to include pointer operations. and the cell at address A5 contains the pattern CA.

Answers    CA CA CA 72 .

8. 26. 24. 19. 43 73 . 30. 16. 5. 14.Exercise  Review problems 2.

Sign up to vote on this title
UsefulNot useful