Linked Lists 28/11/2018. Nodes with member functions. The need for a linked list class
|
|
- Shon Shields
- 5 years ago
- Views:
Transcription
1 ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: Create a linked list class Implement numerous member functions Explain how to step through a linked list Linked Lists Douglas Wilhelm Harder, M.Math Prof. Hiren Patel, Ph.D. hdpatel@uwaterloo.ca dwharder@uwaterloo.ca 2018 by Douglas Wilhelm Harder and Hiren Patel. Some rights reserved. 3 4 Nodes with member functions The need for a linked list class Review our node class Holds an integer datum class Node; class Node { // Member functions to access private member variables Node( int value, Node *p_next = nullptr ); int get_value() const; Node *get_next() const; // Let's make them private now... int node_value; Node *p_next_node; ; A linked list of nodes is, however, difficult to deal with How and were do we add new nodes? Must we do this manually? We will create a linked list class that Stores the address of the first node Has member functions allowing us to access and manipulate the nodes in the linked list int Node::get_value() const { return node_value; Node *Node::get_next() const { return p_next_node; 1
2 5 6 Constructor and destructor Now we introduce a Linked_list class: class Node; class Linked_list; class Linked_list { Linked_list(); ~Linked_list(); ; // Constructor // Destructor Node *p_list_head; // Pointer to head node Constructor initializes the pointer to the head of the list Linked_list::Linked_list(): p_list_head{nullptr { // Nothing else for the constructor to do The destructor needs to delete the linked list, but how Linked_list::~Linked_list() { // To be completed later!!! 7 8 Empty query Inserting node Implement a public member function to check if the linked list is empty If p_list_head equals nullptr, the linked list is empty class Linked_list { Linked_list(); ~Linked_list(); ; // Public member functions bool empty() const; Node *p_list_head; bool Linked_list::empty() const { return ( nullptr == p_list_head ); We can insert a node into the linked list at the front of the list Introduce a public member function that inserts an integer at the front of the linked list void push_front( int datum ); class Linked_list { Linked_list(); ~Linked_list(); ; // Public member functions bool empty() const; void push_front( int datum ); Node *p_list_head; 2
3 Inserting node 9 Inserting into an empty linked list 10 There are two situations we may encounter when inserting a node at the front of a linked list The linked list is empty The linked list has at least one node When inserting (say, 42) into an empty linked list, we want this The steps involved are: Creating a new node storing the new datum that points to null Assigns the address of the new node to p_list_head Inserting into an empty linked list 11 Inserting into a non-empty linked list 12 We can do both in one step: void Linked_list::push_front( int datum ) { // This list is empty p_list_head = new Node{datum, nullptr; else { // This list is not empty When inserting (say, 42) into a non-empty linked list, we want this The steps involved are: Creating a new node storing the new datum that points to what p_list_head used to be storing Assigns the address of the new node to p_list_head 3
4 Inserting into a non-empty linked list 13 Inserting a node 14 We can do both of these, too, in one step: void Linked_list::push_front( int datum ) { // The list is empty p_list_head = new Node{datum, nullptr; else { // List is not empty p_list_head = new Node{datum, p_list_head; Consider this, however: Even when the linked list was empty, p_list_head is assigned the address we need, namely nullptr: void Linked_list::push_front( int datum ) { // The list is empty p_list_head = new Node{datum, nullptr; else { // List is not empty p_list_head = new Node{datum, p_list_head; We can simplify this to: void Linked_list::push_front( int datum ) { p_list_head = new Node{datum, p_list_head; Accessing the value at the front 15 Accessing the value at the front 16 We want the integer stored in the node at the front class Linked_list { Linked_list(); // Constructor ~Linked_list(); // Destructor ; // Public member functions bool empty() const; void push_front( int datum ); int front() const; Node *p_list_head; // Pointer to head node Suppose we want to access the first node: If a node exists, return its value Otherwise, it is nullptr Throw an exception in that case int Linked_list::front() const { std::cerr << "Error: list is empty" << std::endl; throw nullptr; else { return p_list_head->get_value(); 4
5 17 18 Creating a linked list Counting number of nodes in linked list class Node; class Linked_list; int main(); Suppose we want the number of nodes in the linked list This is the size of the linked list int main() { Linked_list list{; list.push_front( 150 ); std::cout << list.front() << std::endl; list.push_front( 105 ); std::cout << list.front() << std::endl; // What happens to the nodes? return 0; Output: We must step through the linked list, counting the nodes as we pass through them Set a counter to zero Assign a temporary pointer p_current_node the address assigned to p_list_head While p_current_node does not equal nullptr Increment the counter Set p_current_node the address of p_current_node->get_next() Counting number of nodes in linked list Counting number of nodes in linked list We will do this in a function size(): std::size_t Linked_list::size() const { size_t list_size{0; Node *p_current_node{p_list_head; while ( p_current_node!= nullptr ) { ++list_size; p_current_node = p_current_node->get_next(); Alternatively, we could use a for loop: std::size_t Linked_list::size() const { std::size_t list_size{0; for ( Node *p_current_node{p_list_head; p_current_node!= nullptr; p_current_node = p_current_node->get_next() ) { ++list_size; return list_size; return list_size; std::size_t Linked_list::size() const { size_t list_size{0; Node *p_current_node{p_list_head; while ( p_current_node!= nullptr ) { ++list_size; p_current_node = p_current_node->get_next(); return list_size; 5
6 21 22 Printing the linked list Finding a value Using this same format, we can print a linked list: void Linked_list::print() const { std::cout << "p_list_head -> "; for ( Node *p_current_node{p_list_head; p_current_node!= nullptr; p_current_node = p_current_node->get_next() ) { std::cout << "(" << p_current_node->get_value() << ") -> "; std::cout << "0" << std::endl; Using this same format, we can also find a value in a linked list: // Returns size() if the value was not found std::size_t Linked_list::find( int datum ) const { std::size_t position{0; for ( Node *p_current_node{p_list_head; (p_current_node!= nullptr) && (p_current_node->get_value()!= datum); p_current_node = p_current_node->get_next() ) { ++position; return position; Creating a linked list 23 Erasing a node 24 class Node; class Linked_list; int main(); int main() { Linked_list list{; list.push_front( 150 ); list.push_front( 105 ); std::cout << "Size: " << list.size() << std::endl; list.print(); To remove a node from the front of a linked list, we require a pop_front() member function We will return true or false, depending on whether or not we were successful in erasing the front node We may encounter three situations when erasing a node: The linked list may be empty There may be only one node in the linked list There may be more than one node in the linked list // What happens to the nodes? return 0; Output: Size: 2 p_list_head -> (105) -> (150) -> 0 6
7 Popping from an empty list Popping from a linked list with one node If the linked list is empty, there is no node to pop: else if ( 1 == size() ) { // Delete the one node in the linked list else { assert( size() > 1 ); // Delete the node at the head of the list Suppose there is only one node in the linked list: We must: Delete the node at the front of the linked list Set p_list_head the value nullptr Return true 27 Popping from a linked list with one node 28 Erasing one node is reasonably straight-forward: else if ( 1 == size() ) { // Delete the one node in the linked list delete p_list_head; p_list_head = nullptr; else { assert( size() > 1 ); // Delete the node at the head of the list Suppose there are many nodes in the linked list: We must: Delete the node at the front of the linked list Set p_list_head the address of the node pointed to by what used to be the node at the front Return true 7
8 29 30 Does this work? else if ( 1 == size() ) { // Delete the one node in the linked list delete p_list_head; p_list_head = nullptr; else { assert( size() > 1 ); delete p_list_head; p_list_head = p_list_head->get_next(); How about this? else if ( 1 == size() ) { // Delete the one node in the linked list delete p_list_head; p_list_head = nullptr; else { assert( size() > 1 ); p_list_head = p_list_head->get_next(); delete???; Instead, we must: Temporarily store the address of the front node Update the pointer to the list head The delete the old node Implementing this: else if ( 1 == size() ) { // Delete the one node in the linked list delete p_list_head; p_list_head = nullptr; else { assert( size() > 1 ); Node *p_previous_list_head{p_list_head; p_list_head = p_list_head->get_next(); delete p_previous_list_head; 8
9 33 Clearing all nodes in a list 34 Now, if the list has only one entry: p_list_head->get_next() is assigned nullptr Calling delete on nullptr is a valid C++ operation that does nothing Suppose we want to empty a non-empty linked list We must pop each node in the linked list Simplifying our implementation: else { assert( size() >= 1 ); Node *p_previous_list_head{p_list_head; p_list_head = p_list_head->get_next(); delete p_previous_list_head; Here is the hard way: void Linked_list::clear() { while ( p_list_head!= nullptr ) { Node *p_previous_list_head{p_list_head; p_list_head = p_current_node->get_next(); delete p_previous_list_head; Clearing all nodes in a list 35 Destructor 36 Question: Why not use member functions we already wrote: void Linked_list::clear() { while (!empty() ) { pop_front(); We can now author a destructor: Linked_list::~Linked_list() { clear(); 9
10 37 38 Summary Here is our Linked_list class so far: class Node; class Linked_list; class Linked_list { Linked_list(); // Constructor ~Linked_list(); // Destructor bool empty() const; std::size_t size() const; int front() const; void print() const; std::size_t find( int datum ) const; Following this lesson, you now Know how to create a simple linked list class Understand how member functions can implement most of the operations in question Know how to step through a linked list void push_front( int datum ); bool pop_front(); void clear(); ; Node *p_list_head; // Pointer to head node References Colophon [1] No references? These slides were prepared using the Georgia typeface. Mathematical equations use Times New Roman, and source code is presented using Consolas. The photographs of lilacs in bloom appearing on the title slide and accenting the top of each other slide were taken at the Royal Botanical Gardens on May 27, 2018 by Douglas Wilhelm Harder. Please see for more information. 10
11 Disclaimer 41 These slides are provided for the ECE 150 Fundamentals of Programming course taught at the University of Waterloo. The material in it reflects the authors best judgment in light of the information available to them at the time of preparation. Any reliance on these course slides by any party for any other purpose are the responsibility of such parties. The authors accept no responsibility for damages, if any, suffered by any party as a result of decisions made or actions based on these course slides for any other purpose than that for which it was intended. 11
Pushing at the back 28/11/2018. Problem. Our linked list class
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: Understand how to push a new entry onto the back of the linked list Determine how we can speed this up Understand that the cost is
More informationMember functions 21/11/2018. Accessing member variables. Accessing member variables
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: Describe member functions Discuss their usage Explain why this is necessary and useful Prof. Hiren Patel, Ph.D. Douglas Wilhelm Harder,
More informationConsole input 26/09/2018. Background. Background
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: Learn how to request data from the console Introduce streams and review whitespace Look at entering characters, integers, floating-point
More informationInsertion sort 20/11/2018. The idea. Example
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: Describe the insertion sort algorithm Look at an example Determine how the algorithm work Create a flow chart Implement the algorithm
More informationTemplates 12/11/2018. Redundancy. Redundancy
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: Observe that much functionality does not depend on specific types See that normally different types require different function definitions
More informationPolymorphism 02/12/2018. Member functions. Member functions
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: Introduce the concept of polymorphism Look at its application in: The Shape class to determine whether or not a point is in the image
More informationLogical operators 20/09/2018. The unit pulse. Background
ECE 150 Fundamentals of Programming Outline In this lesson, we will: See the need for asking if more than one condition is satisfied The unit pulse function Describe the binary logical AND and OR operators
More informationSelection sort 20/11/2018. The idea. Example
0/11/018 ECE 150 Fundamentals of Programming Outline In this lesson, we will: Describe the selection sort algorithm Look at an example Determine how the algorithm work Create a flow chart Implement the
More informationPointer arithmetic 20/11/2018. Pointer arithmetic. Pointer arithmetic
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: Review that pointers store addresses of specific types See that we can add integers to addresses The result depends on the type See
More informationThe call stack and recursion and parameters revisited
ECE 150 Fundamentals of Programming Outline 2 The call stack and recursion and parameters revisited In this lesson, we will: Describe the call stack Step through an example Observe that we can assign to
More informationAnatomy of a program 06/09/2018. Pre-processor directives. In this presentation, we will: Define the components of a program
ECE 150 Fundamentals of Programming Outline 2 Anatomy of a program In this presentation, we will: Define the components of a program Pre-processor directives Statements Blocks of statements Function declarations
More informationMain memory 05/10/2018. Main memory. Main memory
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: Describe main memory Define bytes and byte-addressable memory Describe how addresses are stored Describe how bytes are given addresses
More informationThe structured programming theorem
ECE 150 Fundamentals of Programming Outline 2 The structured programming theorem In this lesson, we will: Review the statements we have seen to this point Look at some very ugly flow charts apparently
More informationDynamic memory allocation
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: Revisit static memory allocation (local variables) Introduce dynamic memory allocation Introduce the new and delete operators allocation
More informationThrowing exceptions 02/12/2018. Throwing objects. Exceptions
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: See that we can throw objects Know that there are classes defined in the standard template library These classes allow more information
More informationBinary and hexadecimal numbers
ECE 150 Fundamentals of Programming Outline 2 Binary and hexadecimal numbers In this lesson, we will: Learn about the binary numbers (bits) 0 and 1 See that we can represent numbers in binary Quickly introduce
More informationInteger primitive data types
ECE 150 Fundamentals of Programming Outline 2 Integer primitive data types In this lesson, we will: Learn the representation of unsigned integers Describe how integer addition and subtraction is performed
More informationStrings 20/11/2018. a.k.a. character arrays. Strings. Strings
ECE 150 Fundamentals of Programming Outline 2 a.k.a. character arrays In this lesson, we will: Define strings Describe how to use character arrays for strings Look at: The length of strings Copying strings
More informationLECTURE 03 LINKED LIST
DATA STRUCTURES AND ALGORITHMS LECTURE 03 LINKED LIST IMRAN IHSAN ASSISTANT PROFESSOR AIR UNIVERSITY, ISLAMABAD LINKED LISTS DEFINITION A linked list is a data structure where each object is stored in
More informationData Structures and Algorithms
Data Structures and Algorithms First Semester 2017/2018 Linked Lists Eng. Anis Nazer Linked List ADT Is a list of nodes Each node has: data (can be any thing, int, char, Person, Point, day,...) link to
More informationUniversity of Waterloo Department of Electrical and Computer Engineering ECE 250 Data Structures and Algorithms. Final Examination
University of Waterloo Department of Electrical and Computer Engineering ECE 250 Data Structures and Algorithms Instructor: Douglas Wilhelm Harder Time: 2.5 hours Aides: none 14 pages Final Examination
More informationDATA STRUCTURES AND ALGORITHMS LECTURE 08 QUEUES IMRAN IHSAN ASSISTANT PROFESSOR AIR UNIVERSITY, ISLAMABAD
DATA STRUCTURES AND ALGORITHMS LECTURE 08 S IMRAN IHSAN ASSISTANT PROFESSOR AIR UNIVERSITY, ISLAMABAD S ABSTRACT DATA TYPE An Abstract Queue (Queue ADT) is an abstract data type that emphasizes specific
More informationECE 2400 Computer Systems Programming Fall 2017 Topic 14: C++ Inheritance
ECE 200 Computer Systems Programming Fall 2017 Topic 1: C++ Inheritance School of Electrical and Computer Engineering Cornell University revision: 2017-11-06-09-36 1 Introduction to C++ Inheritance 2 1.1.
More informationLinked List using a Sentinel
Linked List using a Sentinel Linked List.h / Linked List.h Using a sentinel for search Created by Enoch Hwang on 2/1/10. Copyright 2010 La Sierra University. All rights reserved. / #include
More informationChapter 17: Linked Lists
Chapter 17: Linked Lists 17.1 Introduction to the Linked List ADT Introduction to the Linked List ADT Linked list: set of data structures (nodes) that contain references to other data structures list head
More informationData Structures (INE2011)
Data Structures (INE2011) Electronics and Communication Engineering Hanyang University Haewoon Nam Lecture 5 1 Linked List A chain of nodes Nodes are linked together using pointers NULL a b c d e A node
More informationAn abstract tree stores data that is hierarchically ordered. Operations that may be performed on an abstract tree include:
4.2 Abstract Trees Having introduced the tree data structure, we will step back and consider an Abstract Tree that stores a hierarchical ordering. 4.2.1 Description An abstract tree stores data that is
More informationCommon Misunderstandings from Exam 1 Material
Common Misunderstandings from Exam 1 Material Kyle Dewey Stack and Heap Allocation with Pointers char c = c ; char* p1 = malloc(sizeof(char)); char** p2 = &p1; Where is c allocated? Where is p1 itself
More information1 Short Answer (7 Points Each)
1 Short Answer (7 Points Each) 1. Given the following function, what operations will need to be overloaded in the class T for this code to compile? template T square(t n) { return n * n; } The
More informationECE 2400 Computer Systems Programming Fall 2017 Topic 15: C++ Templates
ECE 2400 Computer Systems Programming Fall 2017 Topic 15: C++ Templates School of Electrical and Computer Engineering Cornell University revision: 2017-11-08-09-37 1 Function Templates 2 2 Class Templates
More informationThe C++ Object Lifecycle. EECS 211 Winter 2019
The C++ Object Lifecycle EECS 211 Winter 2019 2 Initial code setup $ cd eecs211 $ curl $URL211/lec/09lifecycle.tgz tar zx $ cd 09lifecycle 3 Road map Owned string type concept Faking it An owned string
More informationChapter 17: Linked Lists
Chapter 17: Linked Lists Copyright 2009 Pearson Education, Inc. Copyright Publishing as Pearson 2009 Pearson Addison-Wesley Education, Inc. Publishing as Pearson Addison-Wesley 17.1 Introduction to the
More informationCSCE 110 PROGRAMMING FUNDAMENTALS
CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 16. Linked Lists Prof. amr Goneid, AUC 1 Linked Lists Prof. amr Goneid, AUC 2 Linked Lists The Linked List Structure Some Linked List
More informationRefresher: Interface Specifications. ADT Documentation. Set Represented as an Array. Representation Invariant, Abstraction Function
CS 247: Software Engineering Principles Representation Invariant, Abstraction Function Refresher: Interface Specifications An interface specification is a contract between a module's provider and the client
More informationRepresentation Invariant, Abstraction Function
CS 247: Software Engineering Principles Representation Invariant, Abstraction Function Reading: Barbara Liskov and John Guttag, Program Development in Java: Abstraction, Specification, and Object Oriented
More informationData Structures And Algorithms
Data Structures And Algorithms Stacks Eng. Anis Nazer First Semester 2017-2018 Stack An Abstract data type (ADT) Accessed only on one end Similar to a stack of dishes you can add/remove on top of stack
More informationvoid insert( Type const & ) void push_front( Type const & )
6.1 Binary Search Trees A binary search tree is a data structure that can be used for storing sorted data. We will begin by discussing an Abstract Sorted List or Sorted List ADT and then proceed to describe
More informationCS 151. Linked Lists, Recursively Implemented. Wednesday, October 3, 12
CS 151 Linked Lists, Recursively Implemented 1 2 Linked Lists, Revisited Recall that a linked list is a structure that represents a sequence of elements that are stored non-contiguously in memory. We can
More informationSlide Set 14. for ENCM 339 Fall Steve Norman, PhD, PEng. Electrical & Computer Engineering Schulich School of Engineering University of Calgary
Slide Set 14 for ENCM 339 Fall 2016 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary November 2016 ENCM 339 Fall 2016 Slide Set 14 slide 2/35
More informationPurpose of Review. Review some basic C++ Familiarize us with Weiss s style Introduce specific constructs useful for implementing data structures
C++ Review 1 Purpose of Review Review some basic C++ Familiarize us with Weiss s style Introduce specific constructs useful for implementing data structures 2 Class The Class defines the data structure
More informationCSCE 110 PROGRAMMING FUNDAMENTALS
CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 15. Dictionaries (1): A Key Table Class Prof. amr Goneid, AUC 1 Dictionaries(1): A Key Table Class Prof. Amr Goneid, AUC 2 A Key Table
More informationCSE 143. Linked Lists. Linked Lists. Manipulating Nodes (1) Creating Nodes. Manipulating Nodes (3) Manipulating Nodes (2) CSE 143 1
CSE 143 Linked Lists [Chapter 4; Chapter 6, pp. 265-271] Linked Lists A linked list is a collection of dynamically allocated nodes Each node contains at least one member (field) that points to another
More informationContainers: Stack. Jordi Cortadella and Jordi Petit Department of Computer Science
Containers: Stack Jordi Cortadella and Jordi Petit Department of Computer Science The Stack ADT A stack is a list of objects in which insertions and deletions can only be performed at the top of the list.
More informationContainers: Stack. The Stack ADT. The Stack ADT. The Stack ADT
Containers: Stack The Stack ADT A stack is a list of objects in which insertions and deletions can only be performed at the top of the list. Also known as LIFO Last In, First Out) push insert an element
More informationAssignment 4: SkipList
Assignment 4: SkipList Goals : Working with dynamic arrays, pointers, doubly linked lists For this assignment, you will write a Skip List data structure to store integers. When searching a Skip List, items
More informationBinary Search Trees. Contents. Steven J. Zeil. July 11, Definition: Binary Search Trees The Binary Search Tree ADT...
Steven J. Zeil July 11, 2013 Contents 1 Definition: Binary Search Trees 2 1.1 The Binary Search Tree ADT.................................................... 3 2 Implementing Binary Search Trees 7 2.1 Searching
More informationclass Polynomial { public: Polynomial(const string& N = "no name", const vector<int>& C = vector<int>());... };
Default Arguments 1 When declaring a C++ function, you may optionally specify a default value for function parameters by listing initializations for them in the declaration: class Polynomial { public:
More informationUNIVERSITY OF WATERLOO DEPARTMENT OF ELECTRICAL AND COMPUTER ENGINEERING E&CE 250 ALGORITHMS AND DATA STRUCTURES
UNIVERSITY OF WATERLOO DEPARTMENT OF ELECTRICAL AND COMPUTER ENGINEERING E&CE 250 ALGORITHMS AND DATA STRUCTURES Midterm Examination Douglas Wilhelm Harder 1.5 hrs, 2005/02/17 11 pages Name (last, first):
More informationCS242 COMPUTER PROGRAMMING
CS242 COMPUTER PROGRAMMING I.Safa a Alawneh Variables Outline 2 Data Type C++ Built-in Data Types o o o o bool Data Type char Data Type int Data Type Floating-Point Data Types Variable Declaration Initializing
More informationData Structures (CS301) LAB
Data Structures (CS301) LAB Objectives The objectives of this LAB are, o Enabling students to implement Doubly Linked List practically using c++ and adding more functionality in it. Introduction to Singly
More informationStudent Name and ID CS 32, WINTER 2015, PRACTICE MIDTERM I.
UCLA Computer Science Department TA: Kung-Hua Chang Student Name and ID CS 32, WINTER 2015, PRACTICE MIDTERM I. Problem # Maximal Possible Points Received 1.1 3 1.2 5 1.3 5 1.4 5 1.5 5 2 3 3.1 4 3.2 5
More informationSoftware Engineering Concepts: Invariants Silently Written & Called Functions Simple Class Example
Software Engineering Concepts: Invariants Silently Written & Called Functions Simple Class Example CS 311 Data Structures and Algorithms Lecture Slides Friday, September 11, 2009 continued Glenn G. Chappell
More informationComputer Science 62. Bruce/Mawhorter Fall 16. Midterm Examination. October 5, Question Points Score TOTAL 52 SOLUTIONS. Your name (Please print)
Computer Science 62 Bruce/Mawhorter Fall 16 Midterm Examination October 5, 2016 Question Points Score 1 15 2 10 3 10 4 8 5 9 TOTAL 52 SOLUTIONS Your name (Please print) 1. Suppose you are given a singly-linked
More informationSpecial Member Functions
CS 247: Software Engineering Principles Special Member Functions Readings: Eckel, Vol. 1 Ch. 11 References and the Copy Constructor Ch. 12 Operator Overloading ( operator= ) U Waterloo CS247 (Spring 2017)
More informationAssignment of Objects
Copying Objects 1 Assignment of Objects 2 Slides 1. Table of Contents 2. Assignment of Objects 3. Dynamic Content 4. Shallow Copying 5. Deep Copying 6. this Pointer 7. Improved Deep Copy 8. Passing an
More informationFinancial computing with C++
Financial Computing with C++, Lecture 6 - p1/24 Financial computing with C++ LG Gyurkó University of Oxford Michaelmas Term 2015 Financial Computing with C++, Lecture 6 - p2/24 Outline Linked lists Linked
More informationSpring 2008 Data Structures (CS301) LAB
Spring 2008 Data Structures (CS301) LAB Objectives The objectives of this LAB are, o Enabling students to implement Singly Linked List practically using c++ and adding more functionality in it. o Enabling
More informationAdvanced C++ 4/13/2017. The user. Types of users. Const correctness. Const declaration. This pointer and const.
The user. Advanced C++ For : COP 3330. Object oriented Programming (Using C++) http://www.compgeom.com/~piyush/teach/3330 #define private public #define protected public #define class struct Source: Lutz
More informationPart X. Advanced C ++
Part X Advanced C ++ topics Philip Blakely (LSC) Advanced C++ 158 / 217 References The following are highly regarded books. They are fairly in-depth, and I haven t read them in their entirity. However,
More informationMIDTERM EXAMINATION Douglas Wilhelm Harder EIT 4018 x T09:30:00P1H20M Rooms: RCH-103 and RCH-302
ECE 250 Algorithms and Data Structures MIDTERM EXAMINATION Douglas Wilhelm Harder dwharder@uwaterloo.ca EIT 4018 x37023 2013-10-23T09:30:00P1H20M Rooms: RCH-103 and RCH-302 Instructions: Read and initial
More informationl Determine if a number is odd or even l Determine if a number/character is in a range - 1 to 10 (inclusive) - between a and z (inclusive)
Final Exam Exercises Chapters 1-7 + 11 Write C++ code to: l Determine if a number is odd or even CS 2308 Fall 2016 Jill Seaman l Determine if a number/character is in a range - 1 to 10 (inclusive) - between
More informationProgramming II (CS300)
1 Programming II (CS300) Chapter 07: Linked Lists MOUNA KACEM mouna@cs.wisc.edu Spring 2019 Linked Lists 2 Introduction Linked List Abstract Data Type SinglyLinkedList ArrayList Keep in Mind Introduction:
More informationQueue Implementations
Queue Implementations 1 Circular Queues buffer of fixed capacity improvements and cost estimates 2 Deques the double ended queue queue as double linked circular list MCS 360 Lecture 17 Introduction to
More informationSpecial Member Functions. Compiler-Generated Destructor. Compiler-Generated Default Constructor. Special Member Functions
Special Member Functions CS 247: Software Engineering Principles Special Member Functions Readings: Eckel, Vol. 1 Ch. 11 References and the Copy Constructor Ch. 12 Operator Overloading ( operator= ) C++
More informationAnd Even More and More C++ Fundamentals of Computer Science
And Even More and More C++ Fundamentals of Computer Science Outline C++ Classes Special Members Friendship Classes are an expanded version of data structures (structs) Like structs, the hold data members
More informationC++ - Lesson 2 This is a function prototype. a' is a function that takes an integer array argument and returns an integer pointer.
C++ - Lesson 2 1. Explain the following declarations: a) int *a(int a[]); This is a function prototype. 'a' is a function that takes an integer array argument and returns an integer pointer. b) const char
More informationAbstract Data Types 1
Abstract Data Types 1 Purpose Abstract Data Types (ADTs) Lists Stacks Queues 2 Abstract Data Types (ADTs) ADT is a set of objects together with a set of operations. Abstract in that implementation of operations
More informationCPSC 260 Data Structures and Algorithms for Computer Engineers Linked Lists!
CPSC 260 Data Structures and Algorithms for Computer Engineers Linked Lists! Winter 2013 Instructor: Hassan Khosravi Problems with Arrays and Vectors With arrays and vectors you are allocated a large space.
More informationStructuur van Computerprogramma s 2
Structuur van Computerprogramma s 2 dr. Dirk Deridder Dirk.Deridder@vub.ac.be http://soft.vub.ac.be/ Vrije Universiteit Brussel - Faculty of Science and Bio-Engineering Sciences - Computer Science Department
More informationCSCI-1200 Data Structures Fall 2014 Lecture 8 Iterators
Review from Lecture 7 CSCI-1200 Data Structures Fall 2014 Lecture 8 Iterators Designing our own container classes Dynamically allocated memory in classes Copy constructors, assignment operators, and destructors
More informationArray Lists. Lecture 15. Robb T. Koether. Hampden-Sydney College. Mon, Feb 22, 2016
Array Lists Lecture 15 Robb T. Koether Hampden-Sydney College Mon, Feb 22, 2016 Robb T. Koether (Hampden-Sydney College) Array Lists Mon, Feb 22, 2016 1 / 23 1 Inlining Functions 2 List Implementations
More informationFaculty of Information and Communication Technologies
Swinburne University Of Technology Faculty of Information and Communication Technologies ASSIGNMENT COVER SHEET Subject Code: Subject Title: Assignment number and title: Due date: Lecturer: HIT3303 Data
More information// Pointer to the first thing in the list
Linked Lists Dynamic variables combined with structs or classes can be linked together to form dynamic lists or other structures. We define a record (called a node) that has at least two members: next
More informationAbstract Data Types. CptS 223 Advanced Data Structures. Larry Holder School of Electrical Engineering and Computer Science Washington State University
Abstract Data Types CptS 223 Advanced Data Structures Larry Holder School of Electrical Engineering and Computer Science Washington State University 1 Purpose Abstract Data Types (ADTs) Lists Stacks Queues
More informationCSCI-1200 Computer Science II Fall 2006 Lecture 23 C++ Inheritance and Polymorphism
CSCI-1200 Computer Science II Fall 2006 Lecture 23 C++ Inheritance and Polymorphism Review from Lecture 22 Added parent pointers to the TreeNode to implement increment and decrement operations on tree
More informationThe Stack ADT. Stacks. The Stack ADT. The Stack ADT. Set of objects in which the location an item is inserted and deleted is prespecified.
The Stack ADT Stacks Set of objects in which the location an item is inserted and deleted is prespecified Stacks! Insert in order! Delete most recent item inserted! LIFO - last in, first out Stacks 2 The
More informationCSCI-1200 Data Structures Spring 2018 Exam 1 Solutions
CSCI-1200 Data Structures Spring 2018 Exam 1 Solutions 1 Parcel Delivery [ / 35] In the following problem you will finish the implementation of a program that is designed to keep track of several delivery
More informationCOMP6771 Advanced C++ Programming
1 COMP6771 Advanced C++ Programming Week 11 Object Oriented Programming 2016 www.cse.unsw.edu.au/ cs6771 2 Covariants and Contravariants Let us assume that Class B is a subtype of class A. Covariants:
More information! Errors can be dealt with at place error occurs
UCLA Stat 1D Statistical Computing and Visualization in C++ Instructor: Ivo Dinov, Asst. Prof. in Statistics / Neurology University of California, Los Angeles, Winter 200 http://www.stat.ucla.edu/~dinov/courses_students.html
More informationAbstract Data Types 1
Abstract Data Types 1 Purpose Abstract Data Types (ADTs) Lists Stacks Queues 2 Primitive vs. Abstract Data Types Primitive DT: programmer ADT: programmer Interface (API) data Implementation (methods) Data
More informationECE 250 Algorithms and Data Structures
ECE 250 Algorithms and Data Structures Sections 001 and 002 FINAL EXAMINATION Douglas Wilhelm Harder dwharder@uwaterloo.ca EIT 4018 x37023 2014-04-16T09:00P2H30M Rooms: PAC 7, 8 If you are writing a supplemental
More informationStacks and their Applications
Stacks and their Applications Lecture 23 Sections 18.1-18.2 Robb T. Koether Hampden-Sydney College Fri, Mar 16, 2018 Robb T. Koether Hampden-Sydney College) Stacks and their Applications Fri, Mar 16, 2018
More informationExam Informatik D-MATH/D-PHYS :00 11:00
Exam Informatik D-MATH/D-PHYS 25. 1. 2013 09:00 11:00 Dr. Bernd Gartner Examinee: Last name:... First name:... Stud. no.:... With my signature I attest, that I was able to sit the exam under regular conditions
More informationECE 250 Data Structures and Algorithms MID-TERM EXAMINATION B /13:30-14:50 MC-4021/RCH-211
ECE 250 Data Structures and Algorithms MID-TERM EXAMINATION B 2011-02-15/13:30-14:50 MC-4021/RCH-211 Instructions: There are 63 marks. It will be marked out of 55. No aides. Turn off all electronic media
More informationAdvanced Systems Programming
Advanced Systems Programming Introduction to C++ Martin Küttler September 19, 2017 1 / 18 About this presentation This presentation is not about learning programming or every C++ feature. It is a short
More informationUniversity of Waterloo Department of Electrical and Computer Engineering ECE 250 Data Structures and Algorithms. Final Examination
ECE 25 Data Structures and Algorithms University of Waterloo Department of Electrical and Computer Engineering ECE 25 Data Structures and Algorithms Instructor: Douglas Wilhelm Harder Time: 2.5 hours Aides:
More informationLinked Lists. Lecture 16 Sections Robb T. Koether. Hampden-Sydney College. Wed, Feb 22, 2017
Linked Lists Lecture 16 Sections 17.1-17.3 Robb T. Koether Hampden-Sydney College Wed, Feb 22, 2017 Robb T. Koether (Hampden-Sydney College) Linked Lists Wed, Feb 22, 2017 1 / 24 1 Linked Lists 2 The LinkedListNode
More informationWhat will happen if we try to compile, link and run this program? Do you have any comments to the code?
1 # include < iostream > 2 3 int main () 4 { 5 std :: cout
More informationTemplates (again) Professor Hugh C. Lauer CS-2303, System Programming Concepts
Templates (again) Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie, Absolute C++, by Walter
More informationObject-Oriented Programming. Lecture 2 Dr Piotr Cybula
Object-Oriented Programming Lecture 2 Dr Piotr Cybula Encapsulation : data protection code safety and independence better team support with the code separation without «giving
More informationC++ Basics. Data Processing Course, I. Hrivnacova, IPN Orsay
C++ Basics Data Processing Course, I. Hrivnacova, IPN Orsay The First Program Comments Function main() Input and Output Namespaces Variables Fundamental Types Operators Control constructs 1 C++ Programming
More informationFigure 1. A breadth-first traversal.
4.3 Tree Traversals Stepping, or iterating, through the entries of a linearly ordered list has only two obvious orders: from front to back or from back to front. There is no obvious traversal of a general
More informationCSCI-1200 Data Structures Fall 2010 Lecture 8 Iterators
CSCI-1200 Data Structures Fall 2010 Lecture 8 Iterators Review from Lecture 7 Designing our own container classes Dynamically allocated memory in classes Copy constructors, assignment operators, and destructors
More informationContainers: Queue and List. Jordi Cortadella and Jordi Petit Department of Computer Science
Containers: Queue and List Jordi Cortadella and Jordi Petit Department of Computer Science Queue A container in which insertion is done at one end (the tail) and deletion is done at the other end (the
More informationDynamic Data Structures
Dynamic Data Structures We have seen that the STL containers vector, deque, list, set and map can grow and shrink dynamically. We now examine how some of these containers can be implemented in C++. To
More information21. Dynamic Datatypes and Memory Management
Problem 21. Dynamic Datatypes and Memory Management Last week: dynamic data type Have allocated dynamic memory, but not released it again. In particular: no functions to remove elements from llvec. Today:
More informationCMPT 125: Practice Midterm Answer Key
CMPT 125, Spring 2017, Surrey Practice Midterm Answer Key Page 1 of 6 CMPT 125: Practice Midterm Answer Key Linked Lists Suppose you have a singly-linked list whose nodes are defined like this: struct
More informationADT Unsorted List. Outline
Chapter 3 ADT Unsorted List Fall 2017 Yanjun Li CS2200 1 Outline Abstract Data Type Unsorted List Array-based Implementation Linked Implementation Comparison Fall 2017 Yanjun Li CS2200 2 struct NodeType
More informationIntermediate Programming, Spring 2017*
600.120 Intermediate Programming, Spring 2017* Misha Kazhdan *Much of the code in these examples is not commented because it would otherwise not fit on the slides. This is bad coding practice in general
More informationUEE1303(1070) S12: Object-Oriented Programming Operator Overloading and Function Overloading
UEE1303(1070) S12: Object-Oriented Programming Operator Overloading and Function Overloading What you will learn from Lab 7 In this laboratory, you will learn how to use operator overloading and function
More information