// listpq.cpp - implements class ListPQ // cmc, 11/1/2013 #include "listpq.h" // define the list node structure struct Node { double value; Node *next; Node(double v) : value(v), next(0) { } }; // only constructor ListPQ::ListPQ() : list(0) { } // put maintains the list in sorted order, greatest to least void ListPQ::put(double value) { Node *newNode = new Node(value); if (!list) // empty list case list = newNode; else if (value >= list->value) { // new node goes in front newNode->next = list; list = newNode; } else { Node *n = list; while(n->next && value < n->next->value) n = n->next; newNode->next = n->next; n->next = newNode; } } // get removes and returns the first (greatest) value // assumes list is not empty double ListPQ::get() { Node *n = list; double result = n->value; list = n->next; delete n; return result; }