Presentation is loading. Please wait.

Presentation is loading. Please wait.

Welcome to CISC220H Data Structures in C++ sakai.udel.edu Office Hours: Mon/Wed 3:30PM - 4:30PM TA: Adnan Ozsoy.

Similar presentations


Presentation on theme: "Welcome to CISC220H Data Structures in C++ sakai.udel.edu Office Hours: Mon/Wed 3:30PM - 4:30PM TA: Adnan Ozsoy."— Presentation transcript:

1 Welcome to CISC220H Data Structures in C++ sakai.udel.edu Office Hours: Mon/Wed 3:30PM - 4:30PM http://www.udel.edu/CIS/220/jatlas/09FH/ TA: Adnan Ozsoy –ozsoy at cis.udel.edu

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 “Honors” Labs –Normal lab part is optional (but required knowledge) Projects –Pick a “fun” area at the beginning Class –Required discussion and participation –Cover same topics but in more depth

7 What is a Data Structure?

8

9

10

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

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

13 Smith Hall Newark, DE 19716 USA

14

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

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

17 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

18 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

19 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

20 Functions f xf(x)

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

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

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

24 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’;

25 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’;

26 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’;

27 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; }

28 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; }

29 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);

30 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;

31 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 CISC220H Data Structures in C++ sakai.udel.edu Office Hours: Mon/Wed 3:30PM - 4:30PM TA: Adnan Ozsoy."

Similar presentations


Ads by Google