Presentation is loading. Please wait.

Presentation is loading. Please wait.

Welcome to CISC220 Data Structures in C++ sakai.udel.edu Office Hours: Tues 3PM - 4PM / Thurs 1PM - 2PM TA: David.

Similar presentations


Presentation on theme: "Welcome to CISC220 Data Structures in C++ sakai.udel.edu Office Hours: Tues 3PM - 4PM / Thurs 1PM - 2PM TA: David."— Presentation transcript:

1 Welcome to CISC220 Data Structures in C++ sakai.udel.edu http://www.udel.edu/CIS/220/jatlas/09F/ Office Hours: Tues 3PM - 4PM / Thurs 1PM - 2PM TA: David Lopez –http://copland.udel.edu/~ldlopez/cisc220.html

2 Who am I?

3 Who are you?

4 What will we learn? Pointers Lists Analysis/ Big O notation Stacks Queues Trees Sorting Hashing Heaps Graphs NP-completeness

5 How will we learn? Class exercises (5%) Homework problems/programming (5*5%) Three programming projects (30%) Three tests (two midterm * 10%, final 20%)

6 What is a Data Structure?

7

8

9

10 Objectives for Today Manipulate pointers –read/write –create –dereference –assign value Call functions –by value, by reference Reading - K+W P.1-P.6

11 Review of pointers & memory cf. K&W, Chapter P A C++ Primer section P.5

12 Smith Hall Newark, DE 19716 USA

13

14 How could we move the Department of Computer and Information Sciences?

15 Memory Address vs. Value Stored Consider memory to be a single huge array: –Each cell of the array has an address associated with it. –Each cell also stores some value. Don’t confuse the address referring to a memory location with the value stored in that location. 2342... 101 102 103 104 105...

16 Pointers An address refers to a particular memory location. In other words, it points to a memory location. Pointer: A variable that contains the address of a variable. z 2342... 101 102 103 104 105... x y Location (address) name 104

17 Pointers How to initialize a pointer: – can initialize to NULL (i.e. not currently pointing to anything) – & operator: get address of a variable int *x; x?y? int y = 3; x?y3 x = &y; xy3

18 Pointers How to get the value that is pointed to? – * “ dereference operator”: get value pointed to * x returns 3 How to change the variable pointed to? – Use dereference * operator to left of = xy5 *x = 5 ; xy3

19 Functions f xf(x)

20 Call-by-value int sum(int x, int y) { return x + y; } int main(void) { cout << sum(5,6) << endl; }

21 Call-by-reference int sum(const int& x, const int& y) { return x + y; } int main(void) { cout << sum(5,6) << endl; }

22 Group Review Break into teams of 4-5 students One person write an official answer Swap answers with a neighboring group and keep scores!

23 Question 1 What is output from the following code: double x = 5.5; double *px = &x; cout << *px << ‘\n’; *px = 10.0; cout << x << ‘\n’;

24 Question 2 What is output from the following code: double x = 5.5; double y = 10.0; double* px, py; px = &x; py = &y; cout << *px << ‘\n’ << *py << ‘\n’;

25 Question 3 What is output from the following code: double x = 5.5; double *px = &x; *px = 3.14; double& r = *px; r = 99.44; cout << x << ‘\n’;

26 Question 4 What is output from the following code: void swap(int x, int y) { int temp = x; x = y; y = temp; } int main(void) { int a = 0; int b = 5; swap(a,b); cout << a << endl; }

27 Question 5 Change the code to work correctly using pointers: void swap(int x, int y) { int temp = x; x = y; y = temp; } int main(void) { int a = 0; int b = 5; swap(a,b); cout << a << endl; }

28 Question 6 What is the value of temp after each assignment? char blocks[3] = {'A','B','C'}; char *ptr = &blocks[0]; char temp; /*1*/ temp = blocks[0]; /*2*/ temp = *(blocks + 2); /*3*/ temp = *(ptr + 1); ptr = blocks + 1; /*4*/ temp = *ptr; /*5*/ temp = *(ptr + 1);

29 Question 7 What is the value of temp after each assignment? char blocks[3] = {'A','B','C'}; char *ptr = blocks; char temp; /*1*/ temp = *++ptr; /*2*/ temp = ++*ptr; /*3*/ temp = *ptr++; /*4*/ temp = *ptr;

30 Question 8 Write code to reverse a string using only pointer arithmetic (no array accessors): int main(void) { char s[10] = "abcde"; for (int i = 0; s[i] != NULL; i++) { cout << s[i]; } revtString(s); for (int i = 0; s[i] != NULL; i++) { cout << s[i]; } cout << ‘\n’; return 0; }


Download ppt "Welcome to CISC220 Data Structures in C++ sakai.udel.edu Office Hours: Tues 3PM - 4PM / Thurs 1PM - 2PM TA: David."

Similar presentations


Ads by Google