Question: C++: I need help with this assignment. I need to create a dynamic implementation of a deque using these files header file: deque.h #ifndef _DEQUE_H_

C++: I need help with this assignment. I need to create a dynamic implementation of a deque using these files

header file: deque.h

#ifndef _DEQUE_H_ #define _DEQUE_H_

#include #include #include

template class deque { public: deque(); //postcondition: empty deque has been created T& front(); // precondition: deque is not empty // postcondition: reference to element at front of deque // has been returned T front() const; // precondition: deque is not empty // postcondition: copy of element at front of deque // has been returned T& back(); // precondition: deque is not empty // returned: reference to element at front of deque T back() const; // precondition: deque is not empty // returned: copy of element at back of deque void push_front (const T& entry); // postcondition: entry has been inserted at the front // of the deque void push_back (const T& entry); // postcondition: entry has been inserted at the back // of the deque void pop_front(); // precondition: deque is not empty // postcondition: element at front of deque has been removed void pop_back(); // precondition: deque is not empty // postcondition: element at back of deque has been removed size_t size() const; // postcondition: number of elements in deque has been returned bool empty() const; // returned: whether deque is empty template friend bool operator == (const deque& dq1, const deque& dq2); // returned: whether 2 deques are equal - equal is defined // as the deques have the same number of elements & // corresponding elements are equal template friend std::ostream& operator<< (std::ostream& out, const deque& dq); // postcondition: dq has been display from front to rear on out private: std::list l; };

#include "deque.template"

#endif

test file: test_deque.cpp

#include #include "deque.h"

using namespace std;

int main(int argc, char **argv) { deque dq; cout << dq << endl; for (int i = 0; i < 10; i++) dq.push_front (i); cout << dq << endl; dq.pop_back(); cout << dq << endl; dq.push_front (24); cout << dq << endl; return 0; }

I am stuck on the actual implementation:

Here is my code:

#include #include #include #include "deque.h"

template deque::deque() //Postcondition: An empty deque has been created { std::list l; }

template T& deque::front() //Precondition: The deque is not empty //Returned: The reference to the element at the front of the deque { assert(!empty()); return l.front(); }

template T deque::front() const //Precondition: The deque is not empty //Returned: A copy of the element at the front of the deque { assert(!empty()); return l.front(); }

template T& deque::back() //Precondition: The deque is not empty //Returned: The reference to the element at the back of the deque { assert (!empty()); return l.back(); }

template T deque::back() const //Precondition: The deque is not empty //Returned: A copy of the element at the back of the deque { assert (!empty()); return l.back(); }

template void deque::push_front(const T& entry) //Postcondition: entry has been inserted at the front of the deque { l.front() = entry; l.push_front(l.front()); }

template void deque::push_back(const T& entry) //Precondition: The deque is not full //Postcondition: entry has been inserted at the back of the deque { l.back() = entry; l.push_back(l.back()); }

template void deque::pop_front() //Precondition: The deque is not empty //Postcondition: The element at the front of the deque has been removed { assert(!empty()); l.pop_front(); }

template void deque::pop_back() //Precondition: The deque is not empty //Postcondition: The element at the back of the deque has been removed { assert(!empty()); l.pop_back(); }

template size_t deque::size() const //Postcondition: The number of elements in the deque has been returned { return l.size(); }

template bool deque::empty() const //Returned: whether the deque is empty { return l.empty(); }

template bool operator == (const deque& dq1, const deque& dq2) //Returned: whether 2 deques are equal - equal is defined as the deques have the same number of elements & corresponding elements are equal { if(dq1.size() == dq2.size()) { return true; } return false; }

template std::ostream& operator << (std::ostream& out, const deque& dq) //Postcondition: dq has been display from front to rear on out { if(!dq.empty()) { for(size_t i = 0; i < dq.size(); i++) { out << dq << " "; } } return out; }

I am getting segmentation fault when I run it. I need the correct implementation so that I can see what I am doing wrong. I need an answer as soon as possible. Thank you.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!