Question: c++ // Code from: // Data Structures and Algorithms in C++, Goodrich, Tamassia, and Mount, 2nd Ed., 2011. // #pragma once #include using namespace std;

c++c++ // Code from: // Data Structures and Algorithms in C++, Goodrich,

// Code from:

// Data Structures and Algorithms in C++, Goodrich, Tamassia, and Mount, 2nd Ed., 2011.

//

#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;

}

Use the template class SlinkedList discussed in class to implement a singly linked list of characters that store all the characters read from a line of text. The line of text will contain upper and lowe:r case letters, digits, punctuation signs and white spaces. Add two member functions, countVowel and countConsonant that count the number of vowels in the list, respectively the number of consonants in the list. For example, if the line of text given as a input is "Is dark at 6?!", the link list looks like: The number of vowels is 3and the number of consonants s s

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!