// recur_list.cpp // Member functions for simple linked list. // CS210 - S'03 - 3/3/03 - Ray S. Babcock // #include using namespace std; #include "recur_list.h" Linked::Linked( ) { head = NULL; last = NULL; } void Linked::addNode(char ch) { Node * new_node = new Node; new_node->ch = ch; // special case, first node if(head == NULL) { head = new_node; last = new_node; return; } // otherwise add at end last->next = new_node; last = new_node; } void Linked::printNodes(Node * a_node) { // cout << "Entering printNodes" << endl; if(a_node == NULL) { // cout << "Leaving printNodes (first return)" << endl; return; } cout << a_node->ch << " "; printNodes(a_node->next); // cout << "Leaving printNodes (second return)" << endl; return; } void Linked::PrintList( ) { printNodes(head); } void Linked::printReverseNodes(Node * a_node) { // cout << "Entering printReverseNodes" << endl; if(a_node == NULL) { // cout << "Leaving printReverseNodes (first return)" << endl; return; } printReverseNodes(a_node->next); cout << a_node->ch << " "; // cout << "Leaving printReverseNodes (second return)" << endl; return; } void Linked::PrintReverse( ) { printReverseNodes(head); } int Linked::countNodes(Node * a_node) { if(a_node == NULL) return(0); return(1 + countNodes(a_node->next)); } int Linked::countList( ) { return countNodes(head); }