Data Structures – Week #1 Introduction. February 17, 2012Borahan Tümer, Ph.D.2 Goals We will learn methods of how to (explicit goal) organize or structure.

Slides:



Advertisements
Similar presentations
Introduction to C Programming
Advertisements

Pointers.
C Language.
Programming and Data Structure
Unions The storage referenced by a union variable can hold data of different types subject to the restriction that at any one time, the storage holds data.
Names and Bindings.
Pointer applications. Arrays and pointers Name of an array is a pointer constant to the first element whose value cannot be changed Address and name refer.
Introduction of Memory Allocation. Memory Allocation There are two types of memory allocations possible in c. Compile-time or Static allocation Run-time.
Compiler Construction
Chapter 9 Imperative and object-oriented languages 1.
Chapter 6 Structured Data Types Arrays Records. Copyright © 2007 Addison-Wesley. All rights reserved. 1–2 Definitions data type –collection of data objects.
Lecture - 1 on Data Structures. Prepared by, Jesmin Akhter, Lecturer, IIT,JU Data Type and Data Structure Data type Set of possible values for variables.
Dynamic Data Structures H&K Chapter 14 Instructor – Gokcen Cilingir Cpt S 121 (July 26, 2011) Washington State University.
6/10/2015C++ for Java Programmers1 Pointers and References Timothy Budd.
CS-240 Data Structures in C Arrays Dick Steflik. Abstract Data Type A collection of pairs where index is an ordered set of integers and are values of.
ISBN Chapter 6 Data Types: Structured types.
© The McGraw-Hill Companies, 2006 Chapter 5 Arrays.
Pointers. Addresses in Memory When a variable is declared, enough memory to hold a value of that type is allocated for it at an unused memory location.
Lecture 2 Pointers Pointers with Arrays Dynamic Memory Allocation.
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.
Addressing Modes Chapter 11 S. Dandamudi To be used with S. Dandamudi, “Fundamentals of Computer Organization and Design,” Springer,  S.
MT311 Java Application Programming and Programming Languages Li Tak Sing ( 李德成 )
Chapter 1 Algorithm Analysis
Prof. amr Goneid, AUC1 CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 10. Pointers & Dynamic Data Structures.
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
C Programming n General Information on C n Data Types n Arithmetic Operators n Relational Operators n if, if-else, for, while by Kulapan Waranyuwat.
Comp 245 Data Structures Linked Lists. An Array Based List Usually is statically allocated; may not use memory efficiently Direct access to data; faster.
Computer Science Department Data Structure & Algorithms Lecture 8 Recursion.
1 DATA STRUCTURES: LISTS. 2 LISTS ARE USED TO WORK WITH A GROUP OF VALUES IN AN ORGANIZED MANNER. A SERIES OF MEMORY LOCATIONS CAN BE DIRECTLY REFERENCED.
COSC 1P03 Introduction to Data Structures 1.1 COSC 1P03  Audience  planning to major in COSC (prereq. 1P02 60%)  Lectures (AS202, AS217), labs (J301),
Introduction to Arrays in Java Corresponds with Chapter 6 of textbook.
Data Strcutures.
ARRAYS 1 Week 2. Data Structures  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently 
C++ Programming: From Problem Analysis to Program Design, Second Edition1 Objectives In this chapter you will: Learn about the pointer data type and pointer.
CPSC 252 Concrete Data Types Page 1 Overview of Concrete Data Types There are two kinds of data types: Simple (or atomic) – represents a single data item.
Pointers OVERVIEW.
Pointers: Basics. 2 What is a pointer? First of all, it is a variable, just like other variables you studied  So it has type, storage etc. Difference:
Copyright 2005, The Ohio State University 1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation.
CS 161 Introduction to Programming and Problem Solving Chapter 19 Single-Dimensional Arrays Herbert G. Mayer, PSU Status 10/8/2014 Initial content copied.
Defining a 2d Array A 2d array implements a MATRIX. Example: #define NUMROWS 5 #define NUMCOLS 10 int arr[NUMROWS][NUMCOLS];
Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data.
Addressing Modes Chapter 6 S. Dandamudi To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer,
Chapter 11 – Pointer Variables. Declaring a Pointer Variable u Declared with data type, * and identifier type* pointer_variable; u * follows data type.
Copyright © 2006 Pearson Addison-Wesley. All rights reserved This Weeks Topics: Pointers (continued)  Modify C-String through a function call 
 2008 Pearson Education, Inc. All rights reserved. 1 Arrays and Vectors.
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
Multi-dimensional Array 1 Multi-dimensional array refers to an array with more than one index. It is a logical representation. On physical storage, the.
SEQUENTIAL AND OBJECT ORIENTED PROGRAMMING Arrays.
A FIRST BOOK OF C++ CHAPTER 8 ARRAYS AND POINTERS.
1 ENERGY 211 / CME 211 Lecture 4 September 29, 2008.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Lecture.
Introduction to programming in java Lecture 21 Arrays – Part 1.
LINKED LISTS.
Arrays An array is a sequence of objects all of which have the same type. The objects are called the elements of the array and are numbered consecutively.
Pointers: Basics. 2 Address vs. Value Each memory cell has an address associated with it
APS105 Malloc and 2D Arrays (text Ch6.4, Ch10.2).
You learned how to declare pointer variables how to store the address of a variable into a pointer variable of the same type as the variable how to manipulate.
Linked Lists Source: presentation based on notes written by R.Kay, A. Hill and C.Noble ● Lists in general ● Lists indexed using pointer arrays ● Singly.
EGR 2261 Unit 10 Two-dimensional Arrays
Hassan Khosravi / Geoffrey Tien
Data Structures Interview / VIVA Questions and Answers
C Passing arrays to a Function
Data Structures – Week #1
Data Structures (CS212D) Week # 2: Arrays.
Arrays Week 2.
Introduction to Data Structure
Data Structures – Week #1
Data Structures & Algorithms
EECE.2160 ECE Application Programming
Presentation transcript:

Data Structures – Week #1 Introduction

February 17, 2012Borahan Tümer, Ph.D.2 Goals We will learn methods of how to (explicit goal) organize or structure large amounts of data in the main memory (MM) considering efficiency; i.e, memory space and execution time (implicit goal) gain additional experience on what data structures to use for solving what kind of problems programming

February 17, 2012Borahan Tümer, Ph.D.3 Goals continued…1 Explicit Goal We look for answers to the following question: “How do we store data in MM such that execution time grows as slow as possible with the growing size of input data, and data uses up minimum memory space?”

February 17, 2012Borahan Tümer, Ph.D.4 Goals continued…2 As a tool to calculate the execution time of algorithms, we will learn the basic principles of algorithm analysis. To efficiently structure data in MM, we will thoroughly discuss the static, (arrays) dynamic (pointers)‏ ways of memory allocations, two fundemantal Implementation tools for data structures.

February 17, 2012Borahan Tümer, Ph.D.5 Representation of Main Memory

February 17, 2012Borahan Tümer, Ph.D.6 Examples for efficient vs. inefficient data structures 8-Queen problem 1D array vs. 2D array representation results in saving memory space Search for proper spot (square) using horse moves save time over square-by-square search Fibonacci series: A lookup table avoids redundant recursive calls and saves time

February 17, 2012Borahan Tümer, Ph.D.7 Examples for efficient vs. inefficient data structures 8-Queen problem x x x x x x x x x x x x x x x x x x

February 17, 2012Borahan Tümer, Ph.D.8 Examples for efficient vs. inefficient data structures 8-Queen problem x x x x x x x x x int a[4][4]; …. a[0][1]=1; a[1][3]=1; a[2][0]=1; a[3][2]=1; int a[5]; …. a[0]=0; a[1]=2; a[2]=4; a[3]=1; a[4]=3; inefficient: more memory space required efficient: less memory space required

February 17, 2012Borahan Tümer, Ph.D.9 Math Review Exponents Logarithms

February 17, 2012Borahan Tümer, Ph.D.10 Math Review Arithmetic Series: Series where the variable of summation is the base.

February 17, 2012Borahan Tümer, Ph.D.11 Math Review Geometric Series: Series at which the variable of summation is the exponent.

February 17, 2012Borahan Tümer, Ph.D.12 Math Review Geometric Series…cont’d An example to using above formulas to calculate another geometric series

February 17, 2012Borahan Tümer, Ph.D.13 Math Review Proofs Proof by Induction Steps – Prove the base case (k=1)‏ – Assume hypothesis holds for k=n – Prove hypothesis for k=n+1 Proof by counterexample Prove the hypothesis wrong by an example Proof by contradiction ( )‏ Assume hypothesis is wrong, Try to prove this See the contradictory result

February 17, 2012Borahan Tümer, Ph.D.14 Math Review Proof examples (Proofs… cont’d)‏ Proof by Induction Hypothesis Steps 1. Prove true for n=1: 2. Assume true for n=k: 3. Prove true for n=k+1:

February 17, 2012Borahan Tümer, Ph.D.15 Arrays Static data structures that represent contiguous memory locations holding data of same type provide direct access to data they hold have a constant size determined up front (at the beginning of) the run time

February 17, 2012Borahan Tümer, Ph.D.16 Arrays… cont’d An integer array example in C int arr[12]; //12 integers

February 17, 2012Borahan Tümer, Ph.D.17 Multidimensional Arrays To represent data with multiple dimensions, multidimensional array may be employed. Multidimensional arrays are structures specified with the data value, and as many indices as the dimensions of array Example: int arr2D[r][c];

February 17, 2012Borahan Tümer, Ph.D.18 Multidimensional Arrays m: a two dimensional (2D) array with r rows and c columns Row-major representation: 2D array is implemented row-by-row. Column-major representation: 2D array is implemented column-first. In row-major rep., m[i][j] is the entry of the above matrix m at i+1 th row and j+1 th column. “i” and “j” are row and column indices, respectively. How many elements? n = r*c elements

February 17, 2012Borahan Tümer, Ph.D.19 Row-major Implementation Question: How can we store the matrix in a 1D array in a row-major fashion or how can we map the 2D array m to a 1D array a?...m[0][0]...m[0][c-1]...m[r-1][0]... m[r-1][c-1] a l elements index: k → k=l k=l+c-1... k=l+(r-1)c+0k=l+(r-1)c+c-1 In general, m[i][j] is placed at a[k] where k=l+ic+j.

February 17, 2012Borahan Tümer, Ph.D.20 Implementation Details of Arrays Array names are pointers that point to the first byte of the first element of the array. a) double vect[row_limit];// vect is a pointer!!! Arrays may be efficiently passed to functions using their name and their size where the name specifies the beginning address of the array the size states the bounds of the index values. 1. Arrays can only be copied element by element.

February 17, 2012Borahan Tümer, Ph.D.21 Implementation Details… cont’d #define maxrow …; #define maxcol …; … int main() { int minirow; double min; double probability_matrix[maxrow][maxcol]; … ; //probability matrix initialized!!! min=minrow(probability_matrix,maxrow,maxcol,&minirow); …; return 0; }

February 17, 2012Borahan Tümer, Ph.D.22 Implementation Details… cont’d double minrow(double arr[][maxcol], int xpos, int ypos, int *ind){ // finds minimum of sum of rows of the matrix and returns the sum // and the row index with minimum sum. double min; …; mn = ; for (i=0; i<=xpos; i++) { sum=0; for (j=0; j<=ypos; j++)‏ sum += darr[i][j]; if (mn > sum) { mn=sum; *ind=i; } // call by reference!!! } return mn; }

February 17, 2012Borahan Tümer, Ph.D.23 Records As opposed to arrays in which we keep data of the same type, we keep related data of various types in a record. Records are used to encapsulate (keep together) related data. Records are composite, and hence, user-defined data types. In C, records are formed using the reserved word “ struct.”

February 17, 2012Borahan Tümer, Ph.D.24 Struct We declare as an example a student record called “ stdType ”. We declare first the data types required for individual fields of the record stdType, and then the record stdType itself.

February 17, 2012Borahan Tümer, Ph.D.25 Struct… Example enum genderType = {female, male}; // enumerated type declared… typedef enum genderType genderType; // name of enumerated type shortened… struct instrType { …// left for you as exercise!!! } typedef struct instrType instrType; struct classType { // fields (attributes in OOP) of a course declared… char classCode[8]; char className[60]; instrType instructor; struct classType *clsptr; } typedef struct classType classType; // name of structure shortened…

February 17, 2012Borahan Tümer, Ph.D.26 Struct… Example continues struct stdType { char id[8]; //key //personal info char name[15]; char surname[25]; genderType gender;//enumerated type … //student info classType current_classes[10]; //...or classType *cur_clsptr classType classes_taken[50]; //...or classType *taken_clsptr float grade; unsigned int credits_earned; … //next record’s first byte’s address struct stdType *sptr; //address of next student record }

February 17, 2012Borahan Tümer, Ph.D.27 Memory Issues Arrays can be used within records. Ex: classType current_classes[10]; // from previous slide Each element of an array can be a record. stdType students[1000]; Using an array of classType for keeping taken classes wastes memory space (Why?)‏ Any alternatives? How will we keep student records in MM? In an array? Advantages? Disadvantages?

February 17, 2012Borahan Tümer, Ph.D.28 Array Representation Advantages Direct access (i.e., faster execution)‏ Disadvantages Not suitable for changing number of student records The higher the extent of memory waste the smaller the number of student records required to store than that at the initial case. The (constant) size of array requires extension which is impossible for static arrays in case the number exceeds the bounds of the array. The other alternative is pointers that provide dynamic memory allocation

February 17, 2012Borahan Tümer, Ph.D.29 Pointers Pointers are variables that hold memory addresses. Declaration of a pointer is based on the type of data of which the pointer holds the memory address. Ex: stdtype *stdptr;

February 17, 2012Borahan Tümer, Ph.D.30 Linked List Representation Value of header=?Value of header=2E450 Std #1Std #2Std #3Std #n header Memory heap Std 1 Std 2 Std 3 Std n header

February 17, 2012Borahan Tümer, Ph.D.31 Dynamic Memory Allocation header=(*stdtype) malloc(sizeof(stdtype)); //Copy the info of first student to node pointed to by header s =(*stdtype) malloc(sizeof(stdtype)); //Copy info of second student to node pointed to by header Header->sptr=s;...

February 17, 2012Borahan Tümer, Ph.D.32 Arrays vs. Pointers Static data structures Represented by an index and associated value Consecutive memory cells Direct access (+)‏ Constant size (-)‏ Memory not released during runtime (-)‏ Dynamic data structures Represented by a record of information and address of next node Randomly located in heap (cause for need to keep address of next node)‏ Sequential access (-)‏ Flexible size (+)‏ Memory space allocatable and releasable during runtime (+)‏