adt list
play

ADT List Pointer Implementation 3-28-2013 ADT list implemented - PowerPoint PPT Presentation

ADT List Pointer Implementation 3-28-2013 ADT list implemented with nodes and pointers Singly-linked list iterators & const_iterators Reading: Maciel, Chapter 13 HW#4 due: Wednesday, 4/03 (new due date) Exampl mples s done


  1. ADT List Pointer Implementation 3-28-2013

  2.  ADT list  implemented with nodes and pointers  Singly-linked list  iterators & const_iterators Reading: Maciel, Chapter 13 HW#4 due: Wednesday, 4/03 (new due date)

  3. Exampl mples s done e in cl class

  4. struc uct Node e { T T dat ata; a; Node* e* next; t; // Co Constructor tructor Node( e(const const T& & data_item _item, Node* e* next_ptr t_ptr = N NULL) LL) : d data(da data_i ta_item tem), next( t(ne next xt_ptr _ptr) ) {} }; };

  5.  A str uct is the same as a class… truc  except that the default visibility for a struct uct is ic . publ blic  Generally struc truct s are used to define classes that only contain public data fields.  Constructors may be provided.  Other member functions (operators) are usually not defined for stru ct s. ruct

  6. Node* de* bo bob = n b = new ew Nod Node("Bo e("Bob") b"); bob bob->nex >next = h = harr rry->next; >next; // // st step 1 p 1 harry rry->next = ext = bo bob; b; // st // step ep 2

  7. Node* de* ptr ptr = t = tom om->ne >next; xt; tom tom->nex next = t t = tom om->ne >next xt->next ext; delet lete e ptr tr;

  8. Think ink throu rough gh your r solution: lution: does es your r code work k for eve very ry case? se? Test your solution on ...  the empty list  a list containing only one node (which is both first and last in the list)  a list containing two or more nodes  a node in the middle of the list  the last node in the list  the first node in the last

  9.  default constructor  create an empty list  push_back()  add an item to the end of the list  pop_back()  remove the last item from the list  back()  return the last item in the list  insert  insert an item at a given position in the list  erase  delete an item at a given position from the list  traverse: need list iterator

  10.  represent a list with three data members:  head of the list  tail of the list  current size of the list  represent contents with nodes

  11. template<classT> // // list.h, , pointer nter implem ementati ntation on class list { private: /* d decl clare are Node struct ct here */ Node* head; // hea ead of the e list Node* tail; // tail of the list int num_items; // size e of the list ...

  12. template<classT> // // list.h, , pointer nter implem ementati ntation on class list { private: /* d decl clare are Node struct ct here */ #i #incl clude ude <node de.h .h> Node* head; // head of the list Node* tail; // tail of the list int num_items; // size e of the list ...

  13. // // node.h e.h #ifndef NODE_H_ #define NODE_H_ /* A A no node e is the buildi lding ng block ck for a s singly ly-linke linked d list. . */ struct Node { T data; Node* next; Node(const T& data_item, Node* next_ptr = NULL) : data(data_item), next(next_ptr) {} }; #endif

  14. template<class T> // // list.h .h, pointer ter implemen lementa tatio tion class list { public: /* What t else will list need? ? A p publi lic c iterator tor */ private: /* d decl clare are Node struct ct here */ #i #incl clude ude <node de.h .h> Node* head; // head of the list Node* tail; // tail of the list int num_items; // size e of the list ...

  15.  An Iterator is an object that can “iterate” or “traverse” a collection of items, starting at the first item (if there is a first item) and progressing through each item on the list until it gets to the end of the list.  Each standard library container (e.g. the list) provides both an iterator and a const_iterator  The operations on them are the same, except  When a const_iterator is dereferenced ( operator* ), the value of the item referenced cannot be changed.

  16.  We use an iterator like a pointer // access ess each ch element ement of a_lis list and d process ocess it for (list<T>::iterator iter = a_list.begin(); iter != a_list.end(); ++iter) { T next_element = *iter; // do something with next_element (*iter) }  But an iterator is not the same as a pointer  ++iter advances to the next item on the list

  17.  Limitations of a singly-linked list include:  can insert only after a referenced node  removing node requires pointer to previous node  can traverse list only in the forward direction  We can remove these limitations:  Add a pointer in each node to the previous node: This is called a doub ubly-linked inked list st  Another modification:  add a dummy first node, and link the last node to the first node This is a circul rcular r doubly ubly-linked linked list ist

  18.  Implementation of Linked Lists  Maciel: Chapter 13

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend