Instructor: Mr.Vahidipour

Slides:



Advertisements
Similar presentations
Introduction to C Programming
Advertisements

EC-211 DATA STRUCTURES LECTURE 2. EXISTING DATA STRUCTURES IN C/C++ ARRAYS – A 1-D array is a finite, ordered set of homogeneous elements – E.g. int a[100]
Data Structures: Doubly Linked List1 Doubly linked list l The linear linked list is accessed from the first node each time we want to insert or delete.
Introduction to Programming Lecture 39. Copy Constructor.
Chapter 3 DATA: TYPES, CLASSES, AND OBJECTS. Chapter 3 Data Abstraction Abstract data types allow you to work with data without concern for how the data.
Array pair C++ array requires the index set to be a set of consecutive integers starting at 0 C++ does not check an array index to ensure that it belongs.
Data Abstraction and Encapsulation
Lecture # 02 07/02/2013Dr. Muhammad Umair 1. 07/02/2013Dr. Muhammad Umair 2  Numeric  Integer Numbers  0,10,15,4563 etc.  Fractional Number  10.5,
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.
Chapter 2. C++ Class A class name Data members Member functions Levels of program access –Public: section of a class can be accessed by anyone –Private:
Department of Computer Eng. & IT Amirkabir University of Technology (Tehran Polytechnic) Data Structures Lecturer: Abbas Sarraf Arrays.
1 CS 201 Array Debzani Deb. 2 Having trouble linking math.h? Link with the following option gcc –lm –o test test.o.
1 Introduction to Arrays Problem: –Input 5 scores, compute total, average –Input Example –test scores,employees,temperatures.
CSCE 3110 Data Structures & Algorithm Analysis Arrays and Lists.
Chapter 2 Arrays and Structures  The array as an abstract data type  Structures and Unions  The polynomial Abstract Data Type  The Sparse Matrix Abstract.
Chapter 2 1. Arrays Array: a set of index and value Data structure For each index, there is a value associated with that index. Eg. int list[5]: list[0],
Advance Data Structure Review of Chapter 2 張啟中. Review of Chapter 2 Arrays 1.3 Data Abstraction and Encapsulation 2.2 The Array As An abstract Data Type.
Data Structure (Part II) Chapter 2 – Arrays. Matrix A matrix with 5 rows and 3 columns can be represented by n = 3 m = 5 We say this is a 5×3 matrix.
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.
Data Structure Sang Yong Han Chung-Ang University Spring
Data Structures & Algorithm Analysis Arrays. Array: a set of pairs (index and value) data structure For each index, there is a value associated with that.
Section 5 - Arrays. Problem solving often requires information be viewed as a “list” List may be one-dimensional or multidimensional List is implemented.
More Array Access Examples Here is an example showing array access logic: const int MAXSTUDENTS = 100; int Test[MAXSTUDENTS]; int numStudents = 0;... //
Computer programming Outline Arrays [chap 7 – Kochan] –The concept of array –Defining arrays –Initializing arrays –Character.
Data Structures Chapter 2: Arrays 2-1. Four components in a C++ Class –class name –data members: the data that makes up the class –member functions: the.
1 Chapter 12 Arrays. 2 C++ Data Types structured array struct union class address pointer reference simple integral enum char short int long bool floating.
CCSA 221 Programming in C CHAPTER 7 WORKING WITH ARRAYS 1.
1. 2  Introduction  Array Operations  Number of Elements in an array One-dimensional array Two dimensional array Multi-dimensional arrays Representation.
CSC 205 – Java Programming II Lecture 30 April 3, 2002.
Lecture 1 Data Structures Shafay Shamail September 05, 2006.
Chap 2 Array ( 陣列 ). ADT In C++, class consists four components: –class name –data members : the data that makes up the class –member functions : the.
Arrays. Arrays are objects that help us organize large amounts of information.
◦ A one-dimensional array in C is declared implicitly by appending brackets to the name of a variable int list[5], *plist[5]; ◦ arrays start at index.
1 ARRAYS AND STRUCTURES. 2 Arrays Array: a set of index and value data structure For each index, there is a value associated with that index. representation.
C Programming Lecture 15 Two Dimensional Arrays. Two-Dimensional Arrays b The C language allows arrays of any type, including arrays of arrays. With two.
C LANGUAGE UNIT 3. UNIT 3 Arrays Arrays – The concept of array – Defining arrays – Initializing arrays.
Arrays in C. What is Array? The variables we have used so far can store a single value. Array is a new type of variable capable of storing many values.
Strings C supports strings using one-dimensional character arrays. A string is defined as a null-terminated character array. In C, a null is 0. You must.
Introduction toData structures and Algorithms
Data Structure Sang Yong Han
Linked List :: Basic Concepts
Arrays An array is a grouping of elements of the same type that share a common base name Can have any number of elements in the array Individual elements.
Computer Programming BCT 1113
Array, Strings and Vectors
CSCE 3110 Data Structures & Algorithm Analysis
Chap 2 Array (陣列).
Data Structures 4th Week
Module 2 Arrays and strings – example programs.
Data Structures Unit-2 Engineered for Tomorrow CSE, MVJCE.
 Zero - set zero of a polynomial
CH2. ARRAYS.
CS1100 Computational Engineering
CSC 205 – Java Programming II
CSCE 3110 Data Structures & Algorithm Analysis
CS 2308 Exam I Review.
Multidimensional Arrays
Chapter 1: Introduction to Data Structures(8M)
Arrays Chapter 8 Copyright © 2008 W. W. Norton & Company.
Chapter 2 Array and String Visit to more Learning Resources.
Compiler Design Second Lecture.
Multidimensional array
Dr Tripty Singh Arrays.
2017, Fall Pusan National University Ki-Joune Li
Arrays An array is a grouping of elements of the same type that share a common base name Can have any number of elements in the array Individual elements.
Chapter 6 Part 1.
2018, Fall Pusan National University Ki-Joune Li
Arrays Imran Rashid CTO at ManiWeber Technologies.
Abstract Data Types Stacks CSCI 240
Variable Storage Memory Locations (Logical) Variable Classes Stack
Presentation transcript:

Instructor: Mr.Vahidipour Arrays and Structures Instructor: Mr.Vahidipour

آرايه ها و ساختارها ADT (Abstraction data type) آرايه ها يونيون ها و ساختارها ماتريس هاي اسپارس آرايه هاي چند بعدي چند جمله اي ها رشته ها

آرایه - Array مجموعه ای از داده كه در خانه های پشت سرهم حافظه قرارمی گیرند. مجموعه ای از زوجها شامل اندیس و مقدار<i .x> است. به ازا هر اندیس یک مقدار مربوط به آن اندیس وجود دارد (تناظر یا نگاشت) int a [6] = { 3,5,2,7,9,10,11} a[0] a[1] a[2] a[3] a[4] a[5] a[6] 3 5 2 7 9 10 11

ADTمربوط به آرايه ها - GeneralArray(int j, RangList list ,float InitialValue=DefaultValue); /* Creates a j dimension array of floats where the range of the kth dimension is given by the kth element of list.*/ - float Retrieve (index i); //if(i is in the index set )return the item associated with i in the array else return error -void Store( index i, float x); //if (i is in the index set ) insert new pair<i,x> else return error.

آرایه در حافظه یک آرایه یک بعدی بسادگی بوسیله نسبت دادن دو کروشه به نام یک متغیر تعریف میشود: int list[5]; آدرس اولین عنصر آدرس مبنا یا پایه نامیده می شود. Variable Memory addres List[0] base address = a List[1] a+1*sizeof(int) List[2] a+2*sizeof(int) List[3] a+3*sizeof(int) List[4] a+4*sizeof(int)

آدرس دهی آرایه یک بعدی ElementType List [n]; آدرس دهی آرایه یک بعدی ElementType List [n]; List [0]= ٭( base address = α) List [i] = ٭(α + i * size of (ElementType))

ساختار - Structure آرایه ها مجموعه داده های از یک نوع. ساختارها داده هایی از انواع مختلف در کنار هم. ساختار= struct. ساختار = Record مجموعه ای از اقلام داده ها (Field)

تعريف و دسترسي به عناصر struct { char name [ 10 ] ; int age ; float salary ; } person ; Strcpy ( person.name , “james” ); Person.age = 32 ; Person.salary = 250000;

یونیون – Union یونیون ها مانند ساختارها ولي در آن واحد فقط از یک نوع تعریف شده استفاده می کند. از بزرگترین مقداردهی برای آن نوع استفاده می کند. union test{ int x; char y; }

ماتریس اسپارس – Sparse Matrix ماتریسی که عناصر صفر آن زیاد باشد . صرفه جویی در زمان و حافظه. چگونه بايستي اطلاعات يك ماتريس پرصفر را در حافظه ذخيره كنيم تا حافظه كمتري مصرف شود؟ (چه ساختمان داده اي ؟) آيا عملياتهاي مربوط به آرايه ها (ADT) بر روي اين ساختمان داده قابل پياده سازي است؟

<row , column ,value > ماتریس اسپارس نگهداري عناصر غير صفر ماتريس و اطلاعات مربوط <row , column ,value > عناصر بترتيب سطري و در هر سطر بترتيب ستوني ذخيره مي شود.

ماتریس اسپارس – مثال col0 col1 col2 col3 col4 col5 Row0 15 0 0 22 0 -15 Row1 0 11 3 0 0 0 Row2 0 0 0 -6 0 0 Row3 0 0 0 0 0 0 Row4 91 0 0 0 0 0 Row5 0 0 28 0 0 0

ماتریس اسپارس – مثال row col value A[0] 6 6 8 A[1] 0 0 15 A[2] 0 3 22 تعداد سطرهاي ماتريس اوليه تعداد ستونهاي ماتريس اوليه تعداد عناصرغیر صفر ماتريس اوليه

ADT ماتريس اسپارس Class SparseMatrix { //Object: A set of triples <row, column, value> … public: SparseMatrix(int MaxRow,int MaxCol); /* Create a SparseMatrix that can hold up to MaxItems=MaxRow*MaxCol */ SparseMartix Transpose(); SparseMatrix Add(SparseMatrix b); SparseMatrix Multiply(SparceMatrix b); }

ترانهاده ماتریس اسپارس براي ترانهاده كردن اين ماتريس شماره ي سطر و ستون را عوض كرده مقدار عنصر را در ستون value قرار مي دهيم: (0,0,15) (0,0,15) (0,3,22) (3,0,22) (0,5,-15) (5,0,-15)

ترانهاده ماتریس اسپارس - مثال Row col value row col value A[0] b[0] A[1] b[1] A[2] b[2] A[3] b[3] A[4] b[4] 3 5 4 5 3 4 1 1 2 6 2 2 1 1 1 1 5 1 1 5 2 6 2 2

ويژگيهاي كلاس اسپارس class MatrixTerm { friend class SparseMatrix private : int row, col, value;} In SparseMatrix: private: int Rows, Cols, Terms; MatrixTerm smArray [MaxTerms];

تابع ترانهاده ي ماتریس اسپارس SparseMartix SparseMartix::Transpose() //return the transpose of a (*this) { SparseMatrix b; b.Rows=Cols; //rows in b = columns in a b.Cols=Rows; //columns in b = rows in a b.Terms=Terms; //terms in b = terms in a if ( Terms> 0){ int currentb = 1; for ( int c = 0; c < Cols ; c++) for( int j = 0; j < Terms; j ++) if( smArray[j].col ==c) { b. smArray[currentb].row = c; b. smArray[currentb].col = smArray [j].row; b. smArray[currentb].value = smArray [j].value; currentb ++;} } return b;}

تحلیل تابع ترانهاده حلقه های تودرتو عبارات ifو انتسابها در زمان ثابتی انجام میشود. حلقه for خارجی به تعداد ستونهای ماتریس اولیه حلقه for داخلی به تعداد عناصر در ماتریس اولیه O(columns * terms)

تابع ترانهاده ي سریعتر؟ می توان ترانهاده ی یک ماتریس را در زمانی که تابع سطر و ستون است بدست آورد؟ O(columns + terms)

ترانهاده ی سریع محاسبه تعداد عناصر در هر ستون ماتریس اصلی؛ با این عمل تعداد عناصر در هر ردیف ماتریس ترانهاده مشخص می شود. با این اطلاعات موقعیت شروع هر سطر در ماتریس ترانهاده را داریم. حال میتوانیم عناصر ماتریس اصلی را یکی یکی به موقعیت صحیح در ماتریس ترانهاده منتقل کنیم.

الگوريتم ترانهاده ي سريع SparseMatrix SparseMatrix :: fast_transpose() { int *RowSize = new int[Cols]; int *RowStart= new int[Cols]; SparseMatrix b; b.Rows = Cols; b.Cols = Rows; b.Terms = Terms; If (Terms > 0) { for (i = 0; i < Cols ; i++) RowSize[i] = 0; for(I = 0 ; i<Terms ; i++) RowSize[smArray[i].col]++; // compute RowSize[i]= number of terms in row i of b

الگوريتم ترانهاده ي سريع - ادامه RowStart[0] = 0; for ( i=1;I <Cols; i++) RowStart[i] = RowStart[i-1]+ RowSize[i-1]; // RowStart[i] = starting position of row i in b; for( i = 1; i <Terms; i++) { j = RowStart [smArray[i].col] ++ ; b. smArray[j].row = smArray[i].col; b. smArray[j].com = smArray[i].row; b. smArray[j].value = smArray [i].value; } }// end if (Terms>0) delete [] RowSize; delete [] RowStart; return b;}

سوالات؟ تحليل تابع ترانهاده سريع FastTranspose (قسمت 2-4-3) ضرب دو ماتريس اسپارس (قسمت 2-4-4) آيا ساختمان داده ديگري براي نمايش ماتريس اسپارس مي شناسيد؟ (سوالات 7 و 8 از تمرينات بخش 2-4)

نمایش آرایه ها تعداد عناصر آرايه چگونه مي توانيم عناصراين آرايه چند بعدي را در حافظه يك بعدي ذخيره سازي نماييم ؟ ( نگاشت از فضاي چند بعدي به يك بعدي )

نمایش آرایه ها - ادامه دو راه متداول: سطری و ستونی. آرایه دو بعدی a[u0][u1] دارای u0 سطربه نحوی که هر سطر شامل u1 عنصر مي باشد (سطري) دارای u1 ستون به نحوی که هر ستون شامل u0 عنصر مي باشد (ستوني)

آدرس دهی سطري در آرایه دوبعدی Variable Memory address A[0][0] α +(0 * u1+ 0)*E A[0][1] α +(0 * u1+ 1)*E … A[1][0] α +(1 * u1+ 0)*E A[i][0] α +(i * u1 + 0)*E A[i][j] α +(i * u1 + j)*E ElementType A[u0][u1]; E=sizeof (ElementType) base address = α

نمایش آرایه سه بعدی u1 آرایه دوبعدی با ابعاد u2*u3. تعیین مکان A[i][j][k] از مكان شروع ذخيره سازي ماتريس α به تعداد i ماتريس u2*u3 ذخيره شده است. A[i][0][0] حال j سطر u3 عنصري در ادامه قرار گرفته است. A[i][j][0] از اين نقطه k عنصر جاي مي گيرد.

آرایه سه بعدی

فرمول کلی برای آرایه های چندبعدی A[u1][u2]………..[un] A[i1][i2]…[in] فرمول آدرس عنصر α +i1 u1 u2….un +i2 u2 u3….un . +in-1 un +in

ذخيره سازي ماتريسهاي خاص

ذخيره سازي ماتريسهاي خاص - ادامه اين ماتريسها را مي توان نوع خاصي از ماتريس اسپارس دانست. ذخيره سازي عناصر غير صفر در يك آرايه يك بعدي جهت صرفه جويي در حافظه.

ذخيره سازي ماتريسهاي خاص - ادامه ارائه فرمول نگاشت از فضاي دو بعدي به يك بعدي k is index in array= f(i , j)

سوالات فرمول كلي ذخيره سازي ستوني آرايه هاي چند بعدي فرمول ذخيره سازي براي ماتريسهاي خاص (تمرينات 4 تا 8 قسمت 8-2 تمرين هاي تكميلي فصل 2) براي ذخيره سازي چندجمله اي ها و عمليانهاي ويژه آنها ساختمان داده اي مناسب طراحي كنيد. ADT مربوطه را بنويسيد ؟(بخش 2-3)

رشته ها یک نوع داده ی دیگری که عناصر آن کاراکتر هستند. عملکردهای زیادی برای کار با رشته هاوجود دارد: ایجاد یک رشته تهی ضمیمه کردن دو رشته به هم (concatenation) , خواندن یا نوشتن یک رشته کپی کردن یک رشته مقایسه رشته ها درج کردن یک زیر رشته برداشتن یک زیر رشته از یک رشته مشخص.

ADT رشته ها class String { //object: A finite ordered set of zero or more character public: String (char *init ,int m); int operator == (String t); int operator !();//if *this is empty return 1 int Length(); String Concate (String t); String Substr (int i, int j); int Find(String Pat); //Return on index I such that Pat matches the substring of *this that begins at position i. Return -1 is either empty or not a substring of *this. }

1(pattern matching)تطابق الگو یک الگو یا یک زیر رشته را در یک رشته بزرگتر جستجو کنیم. تست متوالی هر کاراکتر رشته تا زمان پیدا شدن الگو یا رسیدن به انتهای رشته میباشد. اگر n طول رشته و m طول الگو باشد O(mn)

تطابق الگو كنوث-موريس-پرات زمان اجرايي O(m+n) در بدترين حالت لازم است تمام كاراكترهاي داخل الگو و رشته حداقل يكبار با هم مقايسه شوند. بخش 2-6-2