Source of linked_nodes_of_int3.cpp


  1: //linked_nodes_of_int3.CPP

  3: #include <iostream>
  4: using namespace std;

  6: int main()
  7: {
  8:     cout << "\nThis program builds a sequence of linked nodes of "
  9:         "integers from values entered\non a single line from the "
 10:         "keyboard. It then displays all of the values in that\n"
 11:         "sequence, in order, with one blank space between each "
 12:         "two values.";
 13:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 15:     typedef int DataType;
 16:     struct  Node;
 17:     typedef Node* NodePointer;
 18:     struct  Node
 19:     {
 20:         DataType data;
 21:         NodePointer link;
 22:     };

 24:     NodePointer head = new Node;  //Get a first node
 25:     NodePointer current = head;   //Make current point at the first node

 27:     cout << "\nEnter values on line below, then press Enter:\n";
 28:     cin >> current->data; //Read a value directly into the first node
 29:     while (cin.peek() != '\n') //While end of line not reached
 30:     {
 31:         int nextValue; //To hold additional input values
 32:         cin >> nextValue; //Get a data value
 33:         NodePointer next = new Node; //Get a new node
 34:         current->link = next; //Attach current node to new node
 35:         current = next; //Make current point at new node
 36:         current->data = nextValue; //Put data value into new node
 37:     }
 38:     current->link = nullptr;    //Make sure sequence is terminated properly

 40:     cin.ignore(80, '\n'); //Clear input stream
 41:     cout << "\nAll values have now been read in and stored in the "
 42:         "sequence of linked nodes.\nThe values in that sequence will "
 43:         "now be displayed.";
 44:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 46:     //Output the data value in each node
 47:     current = head; //Make current point at head of sequence
 48:     while (current != nullptr) //While the end of sequence not reached
 49:     {
 50:         cout << current->data << " "; //Output value pointed at by current
 51:         current = current->link;      //Move current pointer to next node
 52:     }
 53:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');
 54: }