Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. #ifndef DBLYLIST_H
  2. #define DBLYLIST_H
  3.  
  4. #include<cstddef>
  5. #include<iostream>
  6. using namespace std;
  7.  
  8. template <typename T>
  9. struct Node
  10. {
  11. T key;
  12. Node *next, *prev;
  13. };
  14. template <typename T>
  15. class DblyList
  16. {
  17. public:
  18. DblyList();
  19. ~DblyList();
  20. Node<T>* insert(const T&);
  21. Node<T>* insert(Node<T>*, const T&);
  22. Node<T>* remove(Node<T>*);
  23.  
  24. //Add the following
  25. Node<T>* begin() const
  26. {
  27. return head->next;
  28. }
  29. Node<T>* end() const
  30. {
  31. return head;
  32. }
  33. T& front()
  34. {
  35. return head->next->key;
  36. }
  37. T& back()
  38. {
  39. return head->prev->key;
  40. }
  41.  
  42. size_t size() const
  43. {
  44. return length;
  45. }
  46.  
  47. private:
  48. std::Node<T>* head;
  49. size_t length = 0;
  50. };
  51.  
  52. template <typename T>
  53. Node<T>* DblyList<T>::insert(Node<T>* pos, const T& item)
  54. {
  55. Node<T> *tmp = new Node<T> {pos->next, post, item};
  56. pos->next->prev =tmp;
  57. pos->next=tmp;
  58. ++length;
  59. return tmp;
  60. }//which inserts at the front of the list
  61.  
  62. template <typename T>
  63. Node<T>* DblyList<T>::insert(const T& item)
  64. {
  65. return insert(head, item);
  66. }//which inserts a value after the given node and returns a pointer to the inserted node
  67.  
  68. template <typename T>
  69. Node<T>* DblyList<T>::remove(Node<T>* item)
  70. {
  71. Node<T> *left = item-> prev, *right = item->next;
  72. delete item;
  73. left-> next = right;
  74. right -> prev = left;
  75. return left;
  76. --length;
  77. }//which removes the given node from the list and returns the previous node,
  78.  
  79.  
  80.  
  81. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement