Solution Manual for Data Structures and Problem Solving Using C++ 2nd edition by Mark A. Weiss

Similar documents
Pointers in C/C++ 1 Memory Addresses 2

Homework #3 CS2255 Fall 2012

FORM 1 (Please put your name and section number (001/10am or 002/2pm) on the scantron!!!!) CS 161 Exam II: True (A)/False(B) (2 pts each):

C: Pointers. C: Pointers. Department of Computer Science College of Engineering Boise State University. September 11, /21

Exam 3 Chapters 7 & 9

[0569] p 0318 garbage

Goals of this Lecture

Pointers. 10/5/07 Pointers 1

C++ ARRAYS POINTERS POINTER ARITHMETIC. Problem Solving with Computers-I

C++ for Java Programmers

More about BOOLEAN issues

Pointers. Memory. void foo() { }//return

Pointers. A pointer value is the address of the first byte of the pointed object in the memory. A pointer does not know how many bytes it points to.

Pointer Basics. Lecture 13 COP 3014 Spring March 28, 2018

Dynamic Allocation of Memory

Course Text. Course Description. Course Objectives. StraighterLine Introduction to Programming in C++

CS 161 Exam II Winter 2018 FORM 1

What is an algorithm?

calling a function - function-name(argument list); y = square ( z ); include parentheses even if parameter list is empty!

DYNAMIC ARRAYS; FUNCTIONS & POINTERS; SHALLOW VS DEEP COPY

CS162 - POINTERS. Lecture: Pointers and Dynamic Memory

INITIALISING POINTER VARIABLES; DYNAMIC VARIABLES; OPERATIONS ON POINTERS

C: Pointers, Arrays, and strings. Department of Computer Science College of Engineering Boise State University. August 25, /36

Lecture 05 POINTERS 1

CS 137 Part 5. Pointers, Arrays, Malloc, Variable Sized Arrays, Vectors. October 25th, 2017

CA31-1K DIS. Pointers. TA: You Lu

Purpose of Review. Review some basic C++ Familiarize us with Weiss s style Introduce specific constructs useful for implementing data structures

by Pearson Education, Inc. All Rights Reserved.

C BOOTCAMP DAY 2. CS3600, Northeastern University. Alan Mislove. Slides adapted from Anandha Gopalan s CS132 course at Univ.

CSE 307: Principles of Programming Languages

First of all, it is a variable, just like other variables you studied

CSCI-1200 Data Structures Fall 2012 Lecture 5 Pointers, Arrays, Pointer Arithmetic

Summer May 18, 2010

Pointers! Arizona State University 1

CS61C Machine Structures. Lecture 4 C Pointers and Arrays. 1/25/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/

Pointers and Arrays CS 201. This slide set covers pointers and arrays in C++. You should read Chapter 8 from your Deitel & Deitel book.

Lecture Notes on Memory Layout

Tokens, Expressions and Control Structures

Fundamental of Programming (C)

Pointers and References

Comp 11 Lectures. Mike Shah. June 26, Tufts University. Mike Shah (Tufts University) Comp 11 Lectures June 26, / 57

C++ for Engineers and Scientists. Third Edition. Chapter 12 Pointers

COMP26120: Pointers in C (2018/19) Lucas Cordeiro

Pointers. 1 Background. 1.1 Variables and Memory. 1.2 Motivating Pointers Massachusetts Institute of Technology

QUIZ How do we implement run-time constants and. compile-time constants inside classes?

CS61C : Machine Structures

by Pearson Education, Inc. All Rights Reserved. 2

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 13, SPRING 2013

CSCI 171 Chapter Outlines

Advanced C Programming and Introduction to Data Structures

Arrays and Pointers. CSE 2031 Fall November 11, 2013

Intermediate Programming, Spring 2017*

CSCI-1200 Data Structures Spring 2014 Lecture 5 Pointers, Arrays, Pointer Arithmetic

In Java we have the keyword null, which is the value of an uninitialized reference type

Ch. 12: Operator Overloading

C++ (Non for C Programmer) (BT307) 40 Hours

THINK LIKE CREATIVE PROBLEM SOLVING V. ANTON SPRAUL

CS201- Introduction to Programming Current Quizzes

HW1 due Monday by 9:30am Assignment online, submission details to come

APS105. Malloc and 2D Arrays. Textbook Chapters 6.4, Datatype Size

Modern C++ for Computer Vision and Image Processing. Igor Bogoslavskyi

Chapter 1 Getting Started

A Previous CS 310 Final Exam

Arrays and Pointers. Arrays. Arrays: Example. Arrays: Definition and Access. Arrays Stored in Memory. Initialization. EECS 2031 Fall 2014.

School of Science and Technology

Arrays and Pointers. CSC209: Software Tools and Systems Programming (Winter 2019) Furkan Alaca & Paul Vrbik. University of Toronto Mississauga

Why Pointers. Pointers. Pointer Declaration. Two Pointer Operators. What Are Pointers? Memory address POINTERVariable Contents ...

Chapter 18 Vectors and Arrays [and more on pointers (nmm) ] Bjarne Stroustrup

CSCI-1200 Data Structures Fall 2017 Lecture 5 Pointers, Arrays, & Pointer Arithmetic

ECE 2400 Computer Systems Programming Fall 2018 Topic 7: Concrete Data Types

C Review. MaxMSP Developers Workshop Summer 2009 CNMAT

CS 31: Intro to Systems Pointers and Memory. Kevin Webb Swarthmore College October 2, 2018

CS 61C: Great Ideas in Computer Architecture. Lecture 3: Pointers. Bernhard Boser & Randy Katz

CSCE 206: Structured Programming in C++

CSCE 206: Structured Programming in C++

QUIZ. What is wrong with this code that uses default arguments?

CS201 Some Important Definitions

SYSC 2006 C Winter 2012

Object Reference and Memory Allocation. Questions:

10/20/2015. Midterm Topic Review. Pointer Basics. C Language III. CMSC 313 Sections 01, 02. Adapted from Richard Chang, CMSC 313 Spring 2013

Homework #2 Think in C, Write in Assembly

CSC 1300 Exam 4 Comprehensive-ish and Structs

Introduction to Computer Science Midterm 3 Fall, Points

CS61C : Machine Structures

Hacking in C. Pointers. Radboud University, Nijmegen, The Netherlands. Spring 2019

Exercise 3 / Ch.7. Given the following array, write code to initialize all the elements to 0: int ed[100]; Hint: It can be done two different ways!

More C Pointer Dangers

Lecture 04 Introduction to pointers

Dynamic Allocation in C

CSCI-1200 Data Structures Fall 2017 Lecture 10 Vector Iterators & Linked Lists

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Procedural programming with C

Pointers and Arrays 1

QUIZ on Ch.5. Why is it sometimes not a good idea to place the private part of the interface in a header file?

THE GOOD, BAD AND UGLY ABOUT POINTERS. Problem Solving with Computers-I

QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below:

CS 31: Intro to Systems Pointers and Memory. Martin Gagne Swarthmore College February 16, 2016

Pointers, Arrays and C-Strings

CS 103 Unit 11. Linked Lists. Mark Redekopp

Language comparison. C has pointers. Java has references. C++ has pointers and references

Transcription:

Solution Manual for Data Structures and Problem Solving Using C++ 2nd edition by Mark A. Weiss Link full download: https://getbooksolutions.com/download/solutions-manual-fordata-structures-and-problem-solving-using-c-2nd-edition-by-weiss/ Chapter 1 Pointers, Arrays, and Structures 1.1 Key Concepts and How To Teach Them This chapter introduces several concepts: basic arrays (first-class arrays, using vector) basic strings (using string) pointers dynamic allocation reference variables and parameter passing mechanisms structures Depending on the students background, some or even all of this chapter could be skipped, but I recommend at least a quick review of the chapter in all cir-cumstances. Students who have not had C or C++ should go through the entire chapter slowly. It is easy for students to think they understand the material in this chapter based on an earlier course, and my experience is that they do not. 1.1.1 Arrays Modern C++ arrays use the standard vector class and avoids the C-style array. I like to explain the idea of using a library class, so as to lead in to Chapter 2. Remind students that array indexing starts at 0 and goes to size()-1. Off-byone errors are very common; make sure the students are aware of these possibilities, and that the standard vector is not bounds checked (we write a better one in Chapter 3). Explain parameter passing. Finally discuss the push_back idea. I have found that push_back is easy for students to understand.

1.1.2 Strings There is not much to do here; avoid C-style strings. You may prefer to do strings 1.1.3 Pointers Draw the usual memory pictures and emphasize that a pointer object is an object that stores a memory address. Go through as many examples as you can to distin-guish between accessing a pointer and dereferencing it. Note: The NULL constant is defined in several header files, including stdlib.h. 1.1.4 Dynamic Allocation This is here to avoid forward references in the text. You may prefer to delay this material until linked lists are discussed. Or you can preview the idea of new and delete, and explain the problems of stale pointers and double-deletion. Explain the term memory leak. 1.1.5 Reference Variables and Parameter Passing Mechanisms The key topic here is the distinction between call-by-value, call-by-reference, and call-by-constant reference. Emphasize over and over again, that there are really three forms of parameter passing and that the const is not merely window dressing. Here are my rules: Call by value: used for IN parameters for built-in types Call by constant reference: used for IN parameters for class types Call by reference: used for IN OUT parameters Many students insists on passing int objects by constant reference; this is wrong! It induces the overhead of pointer indirection when the reference is accessed inside the function. Many students get confused about passing pointers. When a pointer object is passed, the value of the object is an address. Passing a pointer by reference means that where the pointer points at could change. This is useful for resizing dynami-cally allocated C-style arrays and also in binary tree updates. 1.1.6 Structures This is a quickie opener to the class discussion. A C-style structure achieves the grouping of data, but does not provide for information hiding or encapsulation of functionality. Even so, some issues become evident and are worth discussing: 1. Structures should be passed either by reference or constant reference. 2. Deep vs. shallow copy. 3. Quick introduction to the linked list, C-style.

1.2 Solutions To Exercises In Short 1.1 Pointers can be declared and initialized, they can be assigned to point at an object, they can be dereferenced, they can be involved in arithmetic. The address-of operator can be applied to a pointer in the same manner as any other object. 1.2 (a) Yes; (b) Both have the same value as A; (c) *ptrptr=&b; (d) No; these objects have different types. 1.3 (a) Yes as long as x is an object. (b) No, because x might not be a pointer. 1.4 (a) the address where a is stored; (b) the value of a (5); (c) 1; (d) this is a type mismatch, and if accepted by the compiler is most likely 0; (e) the address where ptr is stored; (f) illegal, because a is not a pointer; (g) the value of a (5); (h) the value of a (5). 1.5 (a) a is a member of type int in struct S and b is a member of type pointer to S in struct S; (b) z is of type S; (c) x is of type pointer to S; (d) y is of type array of 10 S; (e) u is of type array of 10 pointer to S; (f) x->a is of type int; (g) x->b is of type pointer to S; (h) z.b is of type pointer to S; (i) z.a is of type int; (j) *z.a is illegal because z.a is not a pointer type; (k) (*z).a is illegal because z is not a pointer type; (l) (this question should not be here) x->b-z.b is a subtraction of point-ers and is thus of type int; (m) y->a is illegal; (n) y[1] is of type S; (o) y[1].a is of type int; (p) y[1].b is of type pointer to S; (q) u[2] is of type pointer to S; (r) *u[2] is of type S; (s) u[2]->a is of type int; (t) u[2]->b is of type pointer to S; (u) u[10] is of type pointer to S but is past the declared bounds of u; (v) &z is of type pointer to S; (w) &x is of type pointer to pointer to S; (x) u is of type array of pointer to S; (y) y is of type array of S. 1.6 The picture below reflects a, b, and c after the declarations. The statement b=5 changes a to 5 and then c=2 changes a to 2. b c a = 3

1.7 This is perfectly legal. However if the const is moved from the second declaration to the first, then the declaration and initialization of b would be illegal. 1.8 /* begins a comment. 1.3 Exam Questions 1.1. For the declarations below, which statement is illegal? int *ptr1; int *ptr2; int a = 5; a. ptr1 = ptr2; b. ptr1 = a; c. ptr1 = &a; d. *ptr1 = *ptr2; e. *ptr1 = a; 1.2. For the declarations below, which expression is true if ptr1 and ptr2 point at the same object? int *ptr1; int *ptr2; a. ptr1 == ptr2 b. *ptr1 == *ptr2 c. *(ptr1 == *ptr2) d. &ptr1 == &ptr2 e. None of the above 1.3. For the declaration below, what is the type of *a? const int *a; a. int b. const int c. int * d. const int * e. none of the above

1.4. A memory leak occurs when: a. A local array is deleted. b. A dynamically allocated object is deleted. c. A dynamically allocated object is no longer referenced. d. Two pointers point at the same object. e. A dynamically allocated object is deleted twice. 1.5. Which of the following parameter passing mechanisms can be used to alter a parameter? a. Call by value b. Call by reference c. Call by constant reference d. All of the above e. None of the above 1.6. A shallow copy refers to a. the copying of small objects b. the copying of pointers c. the copying of objects that are being pointed at d. the copying of basic types, such as integers e. call by value 1.7. Exogenous data is a. a small member of a structure b. a large member of a structure c. an object that is not part of the structure, but is pointed at by the structure d. a global variable e. the entire structure 1.8. If f is a member of structure S, and p is of type pointer to S, then which expression must be legal? - a. p.f b. p->f c. *p.f d. s.f e. More than one of the above

1.9. What is the result of the following? int x = 5; int & ref = x; ref++; a. It increments x b. It increments ref c. It increments *ref d. It increments &ref e. It is illegal 1.10. What is the result of the following? int x = 5; int *ptr = &x; int * & ref = ptr; *ref++; a. It increments ptr b. It increments ref c. It increments x d. It increments &ref e. It is illegal Answers to Exam Questions 1. B 2. A 3. B 4. C 5. B 6. B 7. C 8. B 9. A 10. A