Question
C++ assignment Part A: Sketching a linked list data structure Draw a sketch of a singly linked list after the following code is executed. Remember
C++ assignment
Part A: Sketching a linked list data structure
Draw a sketch of a singly linked list after the following code is executed. Remember to sketch the head pointer, each node, and each node's contents.
SLinkedList words;
words.addFront(we);
words.addFront(are);
words.removeFront();
words.addFront(the);
words.addFront(people);
Part B: iterating through a linked list:
For the Singly-Linked List class at:
// Code from: // Data Structures and Algorithms in C++, Goodrich, Tamassia, and Mount, 2nd Ed., 2011. // #pragma once #includeusing 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 function/method called "printEveryOther" that prints every other element starting from the first. The function should throw an exception for possible error cases. Show only this new function. (Note: you can test your code by calling this function from the main function).
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started