Arrays and Other Data Structures 4 Introduction to Arrays 4 Bounds and Subscripts 4 Character Arrays 4 Integer Arrays 4 Floating Point Number Arrays 4.

Slides:



Advertisements
Similar presentations
Introduction to C Programming
Advertisements

Chapter 7: Arrays In this chapter, you will learn about
Ceng-112 Data Structures I Chapter 5 Queues.
One Dimensional Arrays
Arrays and Other Data Structures 4 Introduction to Arrays 4 Bounds and Subscripts 4 Character Arrays 4 Integer Arrays 4 Floating Point Number Arrays 4.
Queues CS-212 Dick Steflik. Queues First In, First Out operation – FIFO As items are added they are chronologically ordered, items are removed in their.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 18 Stacks.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 18: Stacks And Queues.
Copyright © 2012 Pearson Education, Inc. Chapter 18: Stacks And Queues.
Data Structure Dr. Mohamed Khafagy.
1 CSC 211 Data Structures Lecture 22 Dr. Iftikhar Azim Niaz 1.
Queue RIZWAN REHMAN CENTRE FOR COMPUTER STUDIES DIBRUGARH UNIVERSITY.
Linked Lists Compiled by Dr. Mohammad Alhawarat CHAPTER 04.
Connecting with Computer Science, 2e
Chapter 9. 2 Objectives You should be able to describe: Addresses and Pointers Array Names as Pointers Pointer Arithmetic Passing Addresses Common Programming.
CS 206 Introduction to Computer Science II 03 / 06 / 2009 Instructor: Michael Eckmann.
Main Index Contents 11 Main Index Contents Container Types Container Types Sequence Containers Sequence Containers Associative Containers Associative Containers.
Lists 4 Introduction to Lists 4 Linear Lists 4 Adding and Deleting in linear Lists 4 Linked Lists 4 Pointers in Linked Lists 4 Inserting into a Linked.
CS 206 Introduction to Computer Science II 10 / 26 / 2009 Instructor: Michael Eckmann.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 12 – Data Structures Outline 12.1Introduction.
 2003 Prentice Hall, Inc. All rights reserved Sorting Arrays Sorting data –Important computing application –Virtually every organization must sort.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 18: Stacks and.
C++ for Engineers and Scientists Third Edition
Introduction of Arrays. Arrays Array form an important part of almost all programming language. It provides a powerful feature and can be used as such.
Dynamic Structures & Arrays.
Arrays and Other Data Structures 4 Introduction to Arrays 4 Bounds and Subscripts 4 Integer Arrays 4 Floating Point Number Arrays 4 Lists (Linked) 4 Stacks.
1 Lecture 22 Chapter 12 Arrays Dale/Weems/Headington.
Chapter 12 Data Structure Associate Prof. Yuh-Shyan Chen Dept. of Computer Science and Information Engineering National Chung-Cheng University.
Review C++ exception handling mechanism Try-throw-catch block How does it work What is exception specification? What if a exception is not caught?
Chapter 7: Arrays. In this chapter, you will learn about: One-dimensional arrays Array initialization Declaring and processing two-dimensional arrays.
1 C++ Classes and Data Structures Jeffrey S. Childs Chapter 8 Stacks and Queues Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall.
CHAPTER 05 Compiled by: Dr. Mohammad Omar Alhawarat Stacks & Queues.
TK1924 Program Design & Problem Solving Session 2011/2012 L6: Queues.
Connecting with Computer Science 2 Objectives Learn what a data structure is and how it is used Learn about single and multidimensional arrays and how.
Data Structures Week 5 Further Data Structures The story so far  We understand the notion of an abstract data type.  Saw some fundamental operations.
 2007 Pearson Education, Inc. All rights reserved C Data Structures.
Connecting with Computer Science, 2e Chapter 8 Data Structures.
Adapted from instructor resources Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights.
Copyright © 2012 Pearson Education, Inc. Chapter 18: Stacks And Queues.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 18: Stacks and Queues (part 3)
Chapter 16 Stacks & Queues. Objective In this chapter we will learn:  Stacks  Queues  Different implementations (arrays and linked list) of both 
Stacks. A stack is a data structure that holds a sequence of elements and stores and retrieves items in a last-in first- out manner (LIFO). This means.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 18 Stacks and Queues.
1 Chapter 12-3 Arrays Dale/Weems. 2 Specification of Time class Time // “Time.h” { public : // 7 function members void Set (int hours, int minutes, int.
FIST, Multi Media University Lecture 5 Stack (Array Implementation) Queue (Array Implementation )
Stacks And Queues Chapter 18.
Data Structures & Algorithms
Computer Science Department Data Structures and Algorithms Queues Lecture 5.
Advanced Higher Computing Science Stacks Queues and linked lists.
 2008 Pearson Education, Inc. All rights reserved. 1 Arrays and Vectors.
Copyright © Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Java From Control Structures through Data Structures by Tony.
C++ Programming Lecture 14 Arrays – Part I The Hashemite University Computer Engineering Department (Adapted from the textbook slides)
1 Linked List. Outline Introduction Insertion Description Deletion Description Basic Node Implementation Conclusion.
Computer Science Department Data Structure and Algorithms Lecture 3 Stacks.
Array and Pointers An Introduction Unit Unit Introduction This unit covers the usage of pointers and arrays in C++
Chapter 5 Arrays Copyright © 2016 Pearson, Inc. All rights reserved.
STACKS & QUEUES for CLASS XII ( C++).
Review Array Array Elements Accessing array elements
12 C Data Structures.
Data Structure and Algorithms
Chapter 15 Lists Objectives
Stacks and Queues.
Queues Queues Queues.
Stack and Queue APURBO DATTA.
Prof. Neary Adapted from slides by Dr. Katherine Gibson
CMSC 341 Lecture 5 Stacks, Queues
QUEUE Visit for more Learning Resources Free Powerpoint Templates.
Data Structures & Algorithms
Using a Queue Chapter 8 introduces the queue data type.
Using a Queue Chapter 8 introduces the queue data type.
Presentation transcript:

Arrays and Other Data Structures 4 Introduction to Arrays 4 Bounds and Subscripts 4 Character Arrays 4 Integer Arrays 4 Floating Point Number Arrays 4 Lists (Contiguous and Linked) 4 Stacks and Queues

Introduction to Arrays 4 An array is a contiguous block of the same data type. For example, you could have an array of integers (a block of integers), but not a block of integers and floats. 4 Arrays are easy to declare in C++: int myIntegerArray [n]; Where n is the size of the block indicating the number of integers in this array

Bounds and Subscripts 4 Array Bounds –"Array bounds" refer to the boundaries in memory which the array occupies. The beginning of the array (the first) element is considered the lower bound, while the end (or top) is considered to be the upper bound. 4 Element –An "element" is an individual entity inside the array. Because C arrays have a lower bound of 0, array[0] refers to the first element. 4 Array Subscript –The expression inside the [... ] is known as an array subscript.

Character Arrays 4 Character arrays :names and other text 4 #include 4 void main () 4{4{ 4 char first_name[20]; 4 cin>>first_name; 4 if (first_name[0] == 'J') 4 cout<<"Your name begins with J"<<endl; 4 cout<<first_name<<endl; 4 cout<<first_name[0]<<endl; 4 cout<<first_name[1]<<endl; 4 cout<<first_name[2]<<endl; 4 cout<<first_name[3]<<endl; 4}4}

Character Arrays 4 Character arrays allow us to get name or other text into a single data item that can hold it 4 We can also refer to each individual character by using subscripts as shown in the example source code 4 Let us now look at 2-D and 3-D arrays

6 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] row 2, col 7 might be Arizona’s high for August EXAMPLE -- To keep monthly high temperatures for all 50 states in one array. int stateHighs [ 50 ] [12 ] ; [ 0 ] [ 1 ] [ 2 ].. stateHighs [2] [7]. [ 48 ] [ 49 ]

7 const int NUM_STATES = 50 ; const int NUM_MONTHS = 12 ; int stateHighs [ NUM_STATES ] [ NUM_MONTHS ] ; 4 In memory, C++ stores arrays in row order. The first row is followed by the second row, etc. Base Address highs for state 0 12 highs for state 1 etc. Alabama Alaska first row second row STORAGE rows columns

8 const NUM_DEPTS = 5 ; // mens, womens, childrens, electronics, furniture const NUM_MONTHS = 12 ; const NUM_STORES = 3 ; // White Marsh, Owings Mills, Towson int monthlySales [ NUM_DEPTS ] [ NUM_MONTHS ] [ NUM_STORES ] ; monthlySales [ 3 ][ 7 ][ 0 ] sales for electronics in August at White Marsh 12 MONTHS columns 5 DEPTS rows 3 STORES sheets

Integer Arrays 4 We wish to store the 4-digit pager numbers for all 50 apartments in an apartment complex 4 int pager_numbers[50]; Why? 4 pager_number[0] = 2435; 4 Write the code to print pager number for apartment 32 and to indicate an error if it equals the pager number for apartment 18

Comparison Statement 4 The “if” is used as a comparative statement in C++ 4 The format is : 4 if (condition is true) 4 {some statements to be executed} 4 else 4 {some other statements to be executed}

Comparison Statements 4 We wish to compare the pager number of apartment 32 to that of apartment 18 and if both are equal, we display an error message 4 if (pager_number[32] == pager_number[18]) 4 cout<<“Error; 4 else 4 cout<<“No Error”;

Integer Arrays 4 Suppose that we wish to print all pager numbers from apartment#0 to apartment#49 in a nicely formatted list 4 The best way to do this would be to use the for loop

The for Statement 4 “for” is a loop statement that is controlled through a loop control variable 4 for (lcv=1; lcv<=100; lcv++) 4 The above loop will start with lcv=1 and it will run until lcv equals 100. The step size is 1 (lcv++) 4 Compare it to the above 4 for (lcv=1; lcv<=100; lcv+=2)

The for Statement 4 “for” statement and while statement can produce identical loops 4 “for” is preferred if the number of iterations is known beforehand. “while” is preferred if the total iterations cannot be computed in advance

Pager Numbers Printout 4 #include 4 void main () 4{4{ 4 int pagers[50]; 4 for (loop=0; loop<50; loop++) 4 cout<<pagers[loop]; 4}4}

Lists 4 Introduction to Lists 4 Contiguous Lists 4 Adding and Deleting in Contiguous Lists 4 Linked Lists 4 Pointers in Linked Lists 4 Inserting into a Linked List 4 Deleting from a Linked List

Introduction to Lists 4 An organization’s membership list may grow and shrink in size. 4 Your phone book may also grow and shrink in size as time passes 4 We need a mechanism to store dynamic lists in the memory

Adapted for academic use from "Computer Science: An Overview" by J. Brookshear Contiguous Lists 4 Contiguous Lists are stored in consecutive memory locations as shown below:

Adding and Deleting in Contiguous Lists 4 Let us consider a phone book. It can be implemented with an array containing names and phone numbers Fred David Alice Bob Carol Contiguous List of Phone Numbers

Adding and Deleting in Contiguous Lists 4 Deleting an entry is a two-step operation Fred David Alice Carol Deleting an entry from the Contiguous List of Phone Numbers Fred David Alice Carol

Adding and Deleting in Contiguous Lists 4 Adding a new entry can take place towards the end of the list Fred David Alice Carol Fred David Alice Carol Joe Adding an entry to the Contiguous List of Phone Numbers

Linked Lists 4 If the contiguous list becomes large, deleting an entry in the middle of the list becomes very slow 4 It is because of the fact that we have to fill the gaps left after deleting en entry 4 If we wish to maintain the list as sorted, we have to sort it after each addition, causing additional processing overheads

Linked Lists 4 This problem can be solved if we implement the list as a linked list 4 Linked lists have entries connected with pointers 4 Deleting an entry can be implemented by re-arranging pointers 4 So we leave the entries where they are and just re-align the pointers

Pointers in Linked Lists 4 Pointers are used in C++ and other languages for pointing to other variables 4 A pointer is declared as a variables that can hold the address of another variable 4 When we declare a variable, a memory location is reserved for it by the system 4 For example 4 int my_money; 4 my_money=200;

Pointers 4 Now assume that memory location 25 is reserved by the system for the variable my_money 4 Location 25 contains the value Next, we declare a pointer variable my_key 4 int *my_key; 4 It means that my_key will hold the address of an integer variable

Pointers 4 Next, we initialize pointer my_key to point to the variable my_money 4 my_key = &my_money; my_keymy_money

Pointers 4 Conceptually, my_key points to my_money my_keymy_money

Pointers 4 Now, there are two ways to access my_money 4 We can refer to it directly 4 We can refer to it through the pointer

Pointers 4 Think about other pointers My mailing address My Home

Pointers

4 Web links are also pointers UCLA Server Computer

Inserting into a Linked List Header Fred NE XT Bob New Entry NE XT

Inserting into a Linked List Header Fred NE XT Bob New Entry NE XT

Inserting into a Linked List Header Fred NE XT Bob NE XT

Deleting from a Linked List Header Bob NE XT Alice NE XT Fred NE XT

Deleting from a Linked List Header Bob NE XT Alice NE XT Fred NE XT

Stacks and Queues 4 Stacks 4 Stack Base and Stack Pointer 4 Push operation 4 Pop operation 4 Queues 4 Queue operations enqueue and dequeue 4 Queue examples

Stacks 4 Stack is like a contiguous list 4 In contiguous lists, we add an item at the back and we are allowed to delete an item anywhere in the list 4 In a stack, we have a fixed size block of memory available in which we can only add and delete at one end 4 We keep track of both ends of stack with pointers

Stack Operation Designated Block for Stack Other Memory

Stack Operation SP SB EMPTY STACK

Stack Operation SP SB Val1 STACK WITH ONE DATA ITEM

Push Operation SP SB Val1 4 We store a data item at the location referenced by SP

Push Operation SP SB Val1 4 We store a data item at the location referenced by SP and then increment SP Val2

Push Operation 4 Stack[SP] = New Value 4 SP= SP+1; 4 The stack has a fixed maximum size of N locations. We cannot bump into other memory 4 Therefore, we must check before pushing if the stack is full 4 How?

Push Operation 4 if (SP == SB+N) 4 cout “sorry!! Stack is full”; 4 else 4{4{ 4 Stack[SP] = New_Value 4 SP= SP+1; 4}4}

Pop Operation SP SB Val1 4 We retrieve a data item from the top of stack. How can we reach top of stack value? Val2 Val3

Pop Operation SP SB Val1 4 Val3 is top of stack and it is one below the current location referenced by SP Val2 Val3

Pop Operation SP SB Val1 4 Val3 is popped out and SP is decremented to point to newly vacated location Val2

Pop Operation 4 Popped_Value = Stack[SP-1]; 4 SP= SP-1; 4 We cannot pop from an empty stack so we must check before popping 4 How?

Pop Operation 4 if (SP == SB) 4 cout “sorry!! Stack is empty”; 4 else 4{4{ 4 Popped_Value = Stack[SP-1]; 4 SP= SP-1; 4}4}

Queues 4 Queues are everywhere!! 4 Post offices, banks, McDonalds, Grocery stores etc. 4 Spell out the queue management rules 4 How to add a person to a queue? 4 How to serve a queue?

Queues 4 Let us implement queues in the computer 4 We can use a fixed size block of memory for this purpose 4 Data items can be added to the queue and deleted from the queue using the same rules as human queues 4 Add at the back 4 Delete at the front

Queue Operation 4 We would like to see an example of queue formation 4 We learn how to set and change front and back indices as per “enqueue” and “dequeue” operations 4 We also learn how to print the elements in a linear queue i.e. a queue implemented in an array without “recycling” emptied locations

Queue Formation 4 A queue can be formed by using an array data structure 4 For example, in C++, a queue can be implemented as an array of characters: 4 int const MAXSIZE=5; 4 int front, back; 4 char letter_queue[MAXSIZE];

Queue Operations 4 Major operations associated with a queue are enqueue and dequeue 4 Let us visualize the letter_queue as defined and see what operations can be done 4 We keep the queue implementation simple (and inefficient). The purpose is to grasp the basic concepts.

An Empty Queue letter_queue front=0 back=0

Queue after adding one element A letter_queue front=0back=1

Queue after adding another element A B letter_queue front=0back=2

Queue after adding third element A B C letter_queue front=0back=3

Queue after deleting one element B C letter_queue front=1back=3

Summary of Operations 4 The “enqueue” operation adds elements to the back of the queue. The back index is incremented AFTER the add operation 4 Thus back index is the NEXT AVAILABLE LOCATION to which an element can be added 4 The “dequeue” operation deletes elements from the front of the queue. The front index is incremented AFTER the delete operation 4 Thus front index is the FRONT ELEMENT in the queue

Listing a Queue 4 Let us assume that this is the “linear” queue and the front and back keep “crawling” forward into the available memory 4 Thus listing the elements of the queue becomes a very simple problem 4 Let us visualize a queue having 4 elements

A Queue With 4 Elements A B C D letter_queue front=0back=4

Exercise to Print the Elements of the Queue 4 Let us write a for loop to print the elements of the queue 4 The declaration of the queue is reproduced below 4 int const MAXSIZE=5; 4 int front, back; 4 char letter_queue[MAXSIZE]; 4 Now front=0 and back=4. All that is needed is a loop that can index into array letter_queue and print the contents.