Question: Part 2 For the Singly-Linked List class: #pragma once #include using namespace std; template class SLinkedList; // forward declaration to be used when declaring SNode

Part 2

For the Singly-Linked List class:

#pragma once

#include

using namespace std;

template class SLinkedList; // forward declaration to be used when declaring SNode

template

class SNode { // singly linked list node

private:

E elem; // linked list element value

SNode *next; // next item in the list

friend class SLinkedList; // provide SLinkedList access

};

template

class SLinkedList { // a singly linked list

public:

SLinkedList(); // empty list constructor

~SLinkedList(); // destructor

bool empty() const; // is list empty?

E& front(); // return front element

void addFront(const E& e); // add to front of list

void removeFront(); // remove front item list

int size() const; // list size

private:

SNode* head; // head of the list

int n; // number of items

};

template

SLinkedList::SLinkedList() // constructor

: head(NULL), n(0) { }

template

bool SLinkedList::empty() const // is list empty?

{

return head == NULL; // can also use return (n == 0);

}

template

E& SLinkedList::front() // return front element

{

if (empty()) throw length_error("empty list");

return head->elem;

}

template

SLinkedList::~SLinkedList() // destructor

{

while (!empty()) removeFront();

}

template

void SLinkedList::addFront(const E& e) { // add to front of list

SNode* v = new SNode; // create new node

v->elem = e; // store data

v->next = head; // head now follows v

head = v; // v is now the head

n++;

}

template

void SLinkedList::removeFront() { // remove front item

if (empty()) throw length_error("empty list");

SNode* old = head; // save current head

head = old->next; // skip over old head

delete old; // delete the old head

n--;

}

template

int SLinkedList::size() const { // list size

return n;

}

.

.

Add a method void SLinkedList::printReverse() that prints every element in the linked list in reverse (i.e., the first node is printed last). Do not use recursion but instead use a (array-based) stack as a temporary data structure.

.

.

Show only this new method:

#include "ArrayStack.h"

template

void SLinkedList::printReverse() { //cout elements in reverse

}

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!