The function named sub1_skip is supposed to subtract 1 from the stuff field every other node in the list. It's not working and I don't quite understand why. Any help would be greatly appreciated.
#include <cstdlib> #include <iostream> using namespace std; struct list_node { char stuff; list_node* next; }; typedef list_node* list_ptr; void build (list_ptr& front, int nodes, char ch); void print (list_ptr front); int sub1_skip (list_ptr& front); int main(int argc, char *argv[]) { list_ptr front; build (front, 10, 'u'); sub1_skip (front); cout << "\nThe list is:\n"; print (front); cout << "\n\n"; system("PAUSE"); return EXIT_SUCCESS; } int sub1_skip (list_ptr& front){ if (front -> stuff == 0 || front -> stuff % 2 == 0){ front -> stuff = front -> stuff - 1; return front -> stuff;} else return front -> stuff; } void build (list_ptr& front, int nodes, char ch) { if (nodes == 0) front = NULL; else { front = new list_node; front -> stuff = ch; build (front -> next, nodes - 1, ch + 1); } } void print (list_ptr front) { if (front != NULL) { cout << front -> stuff << " "; print (front -> next); } }