// Linklist.cpp #include #include class Node{ private: int number; Node *link; public: Node(); Node(int); Node(int, Node *); ~Node(); int get_number(); Node *get_link(); void set_number(int); void set_link(Node *); }; // default constructor Node::Node(){ number = 0; link = NULL; } // constructor with one argument Node::Node(int num){ number = num; link = NULL; } // primary constructor Node::Node(int num, Node *l){ number = num; link = l; } // destructor Node::~Node(){ } // accessor function for number int Node::get_number(){ return number; } // accessor function for link Node * Node::get_link(){ return link; } // mutator function for number void Node::set_number(int n){ number = n; } // mutator function for link void Node::set_link(Node *l){ link = l; } class Linklist{ private: int numItems; Node *list; public: Linklist(); ~Linklist(); get_numItems() const; int is_empty(); int getdata(); void fill_list(); Node *get_node(); void reverse(); void print_list(); private: void reverse_list(Node *&); }; // default constructor Linklist::Linklist(){ numItems = 0; list = NULL; } // destructor Linklist::~Linklist(){ Node * p = list; while (list != NULL){ list = list->get_link(); delete p; p = list; } list = NULL; } void Linklist::fill_list(){ Node *temp; int flag = 1; int data; numItems = 0; list = get_node(); // put first node in list numItems++; // fill rest of list while(flag){ cout << "Enter an integer or 999 to quit: "; cin >> data; if(data != 999){ temp = new Node(data,list); list = temp; numItems++; } else{ flag = 0; } } } // accessor for numItems int Linklist::get_numItems() const { return numItems; } // returns true if list is empty int Linklist::is_empty(){ return (list == NULL); } int Linklist::getdata(){ int data; cout<< "Enter an integer: "; cin >> data; return data; } Node * Linklist::get_node(){ Node *temp = new Node(getdata(),NULL); return temp; } void Linklist::reverse_list(Node * &init){ Node *q = NULL; Node *p = init; init = NULL; while(p != NULL){ q = p; p = p->get_link(); q->set_link(init); init = q; } } void Linklist::print_list(){ Node *p = list; cout << "list -> "; while (p){ cout << p->get_number(); cout << " -> "; p = p->get_link(); } cout << endl; } void Linklist::reverse(){ reverse_list(list); } main(){ Linklist *front = new Linklist; front->print_list(); front->reverse(); front->print_list(); front->fill_list(); front->print_list(); front->reverse(); front->print_list(); cout << "List contains " << front->get_numItems(); cout << " elements." << endl; return 0; }