1 / 67

C++ Programming: Program Design Including Data Structures, Fourth Edition

C++ Programming: Program Design Including Data Structures, Fourth Edition. Chapter 17: Linked Lists. Objectives. In this chapter, you will: Learn about linked lists Become aware of the basic properties of linked lists Explore the insertion and deletion operations on linked lists

raquel
Download Presentation

C++ Programming: Program Design Including Data Structures, Fourth Edition

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 17: Linked Lists

  2. Objectives In this chapter, you will: • Learn about linked lists • Become aware of the basic properties of linked lists • Explore the insertion and deletion operations on linked lists • Discover how to build and manipulate a linked list • Learn how to construct a doubly linked list C++ Programming: Program Design Including Data Structures, Fourth Edition

  3. Introduction • Data can be organized and processed sequentially using an array, called a sequential list • Problems with an array • Array size is fixed • Unsorted array: searching for an item is slow • Sorted array: insertion and deletion is slow C++ Programming: Program Design Including Data Structures, Fourth Edition

  4. Linked Lists • Linked list: a list of items (nodes), in which the order of the nodes is determined by the address, called the link, stored in each node Link field in last node is NULL C++ Programming: Program Design Including Data Structures, Fourth Edition

  5. Linked Lists (continued) • Example: • Suppose that the first node is at memory location 1200, and the second node is at memory location 1575 C++ Programming: Program Design Including Data Structures, Fourth Edition

  6. Linked Lists (continued) • Because each node of a linked list has two components, we need to declare each node as a class or struct • Data type of a node depends on the specific application • The link component of each node is a pointer C++ Programming: Program Design Including Data Structures, Fourth Edition

  7. Linked Lists: Some Properties C++ Programming: Program Design Including Data Structures, Fourth Edition

  8. Linked Lists: Some Properties (continued) • current = head; • Copies value of head into current C++ Programming: Program Design Including Data Structures, Fourth Edition

  9. Linked Lists: Some Properties (continued) • current = current->link; C++ Programming: Program Design Including Data Structures, Fourth Edition

  10. Linked Lists: Some Properties (continued) C++ Programming: Program Design Including Data Structures, Fourth Edition

  11. Traversing a Linked List • The basic operations of a linked list are: • Search to determine if an item is in the list • Insert an item in the list • Delete an item from the list • Traversal: given a pointer to the first node of the list, step through the nodes of the list C++ Programming: Program Design Including Data Structures, Fourth Edition

  12. Traversing a Linked List (continued) • To traverse a linked list: • Example: C++ Programming: Program Design Including Data Structures, Fourth Edition

  13. Item Insertion and Deletion • Consider the following definition of a node: • We will use the following variable declaration: C++ Programming: Program Design Including Data Structures, Fourth Edition

  14. Insertion • Consider the following linked list: • A new node with info50 is to be created and inserted after p C++ Programming: Program Design Including Data Structures, Fourth Edition

  15. The sequence of statements to insert the node is very important. Suppose that we reverse the sequence of the statements and execute the statements in the following order:

  16. Deletion Node with info 34 is removed from the list, but memory is still occupied; node is dangling C++ Programming: Program Design Including Data Structures, Fourth Edition

  17. Building a Linked List (version 1) • This method’s propety: If data is unsorted: • The list will be unsorted • Can build a linked list forward or backward • Forward: a new node is always inserted at the end of the linked list • Backward: a new node is always inserted at the beginning of the list C++ Programming: Program Design Including Data Structures, Fourth Edition

  18. Building a Linked List Forward • You need three pointers to build the list: • One to point to the first node in the list, which cannot be moved • One to point to the last node in the list • One to create the new node C++ Programming: Program Design Including Data Structures, Fourth Edition

  19. Building a Linked List Forward (continued) We now repeat statements 1 through 6b three more times: C++ Programming: Program Design Including Data Structures, Fourth Edition

  20. Building a Linked List Backward • The algorithm is: • Initialize first to NULL • For each item in the list • Create the new node, newNode • Store the item in newNode • Insert newNode before first • Update the value of the pointer first C++ Programming: Program Design Including Data Structures, Fourth Edition

  21. Linked List as an ADT • The basic operations on linked lists are: • Initialize the list • Determine whether the list is empty • Print the list • Find the length of the list • Destroy the list C++ Programming: Program Design Including Data Structures, Fourth Edition

  22. Linked List as an ADT (continued) • The basic operations on linked lists are: (continued) • Retrieve the info contained in the first node • Retrieve the info contained in the last node • Search the list for a given item • Insert an item in the list • Delete an item from the list • Make a copy of the linked list C++ Programming: Program Design Including Data Structures, Fourth Edition

  23. Linked List as an ADT (continued) • In general, there are two types of linked lists: • Sorted and unsorted lists • The algorithms to implement the operations search, insert, and remove slightly differ for sorted and unsorted lists C++ Programming: Program Design Including Data Structures, Fourth Edition

  24. Linked List as an ADT (continued) • If a linked list is unordered, we can insert a new item at either the end or the beginning • buildListForward inserts item at the end • buildListBackward inserts new item at the beginning • To accommodate both operations, we will write two functions: • insertFirst and insertLast • We will use two pointers in the list: • first and last C++ Programming: Program Design Including Data Structures, Fourth Edition

  25. Structure of Linked List Nodes • The node has two member variables • To simplify operations such as insert and delete, we define the class to implement the node of a linked list as a struct • The definition of the struct nodeType is: C++ Programming: Program Design Including Data Structures, Fourth Edition

  26. Member Variables of the class linkedListType • We use two pointers: first and last • We also keep a count of the number of nodes in the list • linkedListType has three member variables: C++ Programming: Program Design Including Data Structures, Fourth Edition

  27. Linked List Iterators • One of the basic operations performed on a list is to process each node of the list • List must be traversed, starting at first node • Common technique is to provide an iterator • Iterator: object that produces each element of a container, one element at a time • The two most common operations are: ++ (the increment operator) * (the dereferencing operator) C++ Programming: Program Design Including Data Structures, Fourth Edition

  28. Linked List Iterators (continued) • Note that an iterator is an object • We need to define a class (linkedListIterator) to create iterators to objects of the class linkedListType • Would have one member variable: • Refers to (the current) node C++ Programming: Program Design Including Data Structures, Fourth Edition

  29. Good Use for Templates • Since a node can contain anything (not just an int), we want the nodeClass to be templated. template <class Type> class nodeType { private: Type info; nodeType<Type> * link }; C++ Programming: Program Design Including Data Structures, Fourth Edition

  30. Print the List C++ Programming: Program Design Including Data Structures, Fourth Edition

  31. Length of a List C++ Programming: Program Design Including Data Structures, Fourth Edition

  32. Retrieve the Data of the First Node C++ Programming: Program Design Including Data Structures, Fourth Edition

  33. Retrieve the Data of the Last Node C++ Programming: Program Design Including Data Structures, Fourth Edition

  34. Begin and End C++ Programming: Program Design Including Data Structures, Fourth Edition

  35. Copy the List • Steps: • Create a node, and call it newNode • Copy the info of the node (in the original list) into newNode • Insert newNode at the end of the list being created C++ Programming: Program Design Including Data Structures, Fourth Edition

  36. Destructor C++ Programming: Program Design Including Data Structures, Fourth Edition

More Related