My program want compile it says that I have one error, I need some help because
ID: 3635359 • Letter: M
Question
My program want compile it says that I have one error, I need some help because I been looking and I cant find the error.The error says: Error 1 fatal error C1075: end of file found before the left brace '{' at 'c:usersmrs.tikishadocumentsisual studio 2008projectsssignment7ssignment7 roubleshooting7.cpp(6)' was matched c:usersmrs.tikishadocumentsisual studio 2008projectsssignment7ssignment7 roubleshooting7.cpp line 129
This is my program:
#include <iostream>
template <typename T>
class double_linked
{
struct node
{
T data;
node*prev;
node*next;
node(T t, node*p, node*n):data(t), prev(p), next(n){}
};
node*head;
node*tail;
public:
double_linked(): head(NULL), tail (NULL){}
template
#include <iostream>
template <typename T>
class double_linked
{
struct node
{
T data;
node*prev;
node*next;
node(T t, node*p, node*n): data(t), prev(p), next(n) {}
};
node*head;
node*tail;
public:
double_linked(): head(NULL), tail(NULL) {}
template <int N>
double_linked(T(&arr)[N]): head(NULL), tail(NULL)
{
for(int i(0); i!=N; ++i)
push_back(arr[i]);
}
bool empty() const {return (!head || !tail);}
operator bool() const {return !empty();}
void push_back(T);
void push_front(T);
T pop_back();
T pop_front();
~double_linked()
{
while(head)
{
node*temp(head);
head = head->next;
delete temp;
}
}
};
template <typename T>
void double_linked <T> ::push_back(T data)
{
tail = new node (data, tail, NULL);
if(tail->prev)
tail->prev->next=tail;
if(empty())
head = tail;
}
template <typename T>
void double_linked<T>::push_front(T data)
{
head = new node(data, NULL, head);
if(head->next)
head->next->prev = head;
if(empty())
tail = head;
}
template<typename T>
T double_linked<T>::pop_back()
{
if(empty())
throw("double_linked:list empty");
node*temp(tail);
T data(tail->data);
tail = tail->prev;
if(tail)
tail->next = NULL;
else
head = NULL;
delete temp;
return data;
}
template<typename T>
T double_linked<T>::pop_front()
{
if(empty())
throw("double_linked: list empty");
node*temp(head);
T data(head->data);
head = head->next;
if(head)
head->prev = NULL;
else
tail= NULL;
delete temp;
return data;
}
int main()
{
int arr[] = {4,6,8,32,19};
double_linked<int>dlist(arr);
dlist.push_back(11);
dlist.push_front(100);
while(dlist)
std::cout << dlist.pop_back() <<"";
}
Explanation / Answer
try this: #include template class double_linked { struct node { T data; node*prev; node*next; node(T t, node*p, node*n): data(t), prev(p), next(n) {} }; node*head; node*tail; public: double_linked(): head(NULL), tail(NULL) {} template double_linked(T(&arr)[N]): head(NULL), tail(NULL) { for(int i(0); i!=N; ++i) push_back(arr[i]); } bool empty() const {return (!head || !tail);} operator bool() const {return !empty();} void push_back(T); void push_front(T); T pop_back(); T pop_front(); ~double_linked() { while(head) { node*temp(head); head = head->next; delete temp; } } }; template void double_linked ::push_back(T data) { tail = new node (data, tail, NULL); if(tail->prev) tail->prev->next=tail; if(empty()) head = tail; } template void double_linked::push_front(T data) { head = new node(data, NULL, head); if(head->next) head->next->prev = head; if(empty()) tail = head; } template T double_linked::pop_back() { if(empty()) throw("double_linked:list empty"); node*temp(tail); T data(tail->data); tail = tail->prev; if(tail) tail->next = NULL; else head = NULL; delete temp; return data; } template T double_linked::pop_front() { if(empty()) throw("double_linked: list empty"); node*temp(head); T data(head->data); head = head->next; if(head) head->prev = NULL; else tail= NULL; delete temp; return data; } int main() { int arr[] = {4,6,8,32,19}; double_linkeddlist(arr); dlist.push_back(11); dlist.push_front(100); while(dlist) std::coutRelated Questions
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.