Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef DBLYLIST_H
- #define DBLYLIST_H
- #include<cstddef>
- #include<iostream>
- using namespace std;
- template <typename T>
- struct Node
- {
- T key;
- Node *next, *prev;
- };
- template <typename T>
- class DblyList
- {
- public:
- DblyList();
- ~DblyList();
- Node<T>* insert(const T&);
- Node<T>* insert(Node<T>*, const T&);
- Node<T>* remove(Node<T>*);
- //Add the following
- Node<T>* begin() const
- {
- return head->next;
- }
- Node<T>* end() const
- {
- return head;
- }
- T& front()
- {
- return head->next->key;
- }
- T& back()
- {
- return head->prev->key;
- }
- size_t size() const
- {
- return length;
- }
- private:
- std::Node<T>* head;
- size_t length = 0;
- };
- template <typename T>
- Node<T>* DblyList<T>::insert(Node<T>* pos, const T& item)
- {
- Node<T> *tmp = new Node<T> {pos->next, post, item};
- pos->next->prev =tmp;
- pos->next=tmp;
- ++length;
- return tmp;
- }//which inserts at the front of the list
- template <typename T>
- Node<T>* DblyList<T>::insert(const T& item)
- {
- return insert(head, item);
- }//which inserts a value after the given node and returns a pointer to the inserted node
- template <typename T>
- Node<T>* DblyList<T>::remove(Node<T>* item)
- {
- Node<T> *left = item-> prev, *right = item->next;
- delete item;
- left-> next = right;
- right -> prev = left;
- return left;
- --length;
- }//which removes the given node from the list and returns the previous node,
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement