Could someone please tell me what is wrong with my code.
Code:
// poddriver.cpp

//Adapted from Roger Priebe
//CS2308 11/17/08

#include <stdlib.h>
#include <iostream>
#include "bobcatPod.h"

using namespace std;

int main()
{
    
    Song s1("Frank Sinatra", "My way", 14);
    Song s2("Beatles", "Act Naturally", 5);
    Song s3;
    
    BobCatPod p(256);
    BobCatPod q(512);
    BobCatPod r(25);

    cout << "pod p" << endl << p << endl;
    cout << "pod q, size 512 exceeds max, should be reset to 256 " << endl
         << q << endl;
    cout << "pod r, size should be 25 " << endl << r << endl;


    cout << "Song 1" << s1 << endl;
    cout << "Song 2" << s2 << endl;
    cout << "Song 3" << s3 << endl;

    s3.setArtist("Buck Owens");
    s3.setTitle("Act Naturally");
    s3.setSize(20);

    cout << "Song 3 updated " << s3 << endl;
    cout << "Artist 1 (Frank Sinatra)  " << s1.getArtist() << endl;
    cout << "Title 2 (Act Naturally)  " << s2.getTitle() << endl;
//    s1.setSize(7);
//    cout << "Size 1 (7) " << s1.getSize() << endl;

//test relational operators

    if (s1 < s3 ) cout << endl << "s1 < s3" << endl;
      else cout << endl << "s1 >= s3" << endl;
    if (s1 == s2) cout << endl << "s1 == s2" << endl;
      else cout << endl << "s1 != s2"  << endl;
    
// test addnode
    cout << "add song 1, size 14 " << r.addSong(s1)  
         << "   memory left = "  << r.getRemainingMemory() <<endl;
    cout << "add song 2, size 5 " << r.addSong(s2) 
          << "   memory left = "  << r.getRemainingMemory() << endl;
    cout << "add song 3, size 20 should fail " << r.addSong(s3) 
         << "   memory left = "  << r.getRemainingMemory() << endl;
  
    s3.setSize(2);
    cout << "Size 3 (2) " << s3.getSize() << endl;
    cout << "add song 3, size 2 should succeed " << r.addSong(s3) 
         << "   memory left = "  << r.getRemainingMemory() << endl;


// test output
    cout << r << endl;

//test delete

    r.removeSong(s1);
    cout << r << endl;
    r.removeSong(s3);
    cout << r << endl;

    cout << "Total Memory"<< r.getTotalMemory() << endl;





    return 0;
}
Code:
//song.h
#ifndef SONG_H
#define SONGT_H
#include <stdlib.h>
#include <iostream>
#include <ostream>
#include <string>

using namespace std;


class Song
{
  
   public:
      Song::Song ();
      Song::Song(string , string , int ); // constructor
      void setSize(int s);
      double getSize(); // access or
      void setTitle (string t);
      string getTitle();
      void setArtist (string a);
      string getArtist();
      void addSong (int);
      friend ostream& operator<<(ostream & os, Song & s);
   private:
      string title;    //dynamic allocation
      string artist;
      int size;
};
#endif
Code:
// file song.cpp
#include "song.h"
#include "bobcatPod.h"

 ostream & operator << ( ostream & os, Song & s)
 {
      os << s.getTitle();
      os  << s.getArtist();
      return os;
 }
//constructor
Song::Song ()
{
    title=" ";
    artist=" ";
    size = 0;
}
Song::Song(string a, string t, int s) // constructor
{
    size = s;
    title = t;
    
    artist = a ;
    
}
//accessor for name
string Song :: getTitle()
{
      return title;
}
//mutator
void Song :: setTitle (string t)
{
     title = t;
     
}
string Song :: getArtist()
{
      return artist;
}
//mutator
void Song :: setArtist (string a)
{
     artist = a;
     
}
void Song::setSize(int s)
{
    size = s;
}
double Song::getSize()
{
    return size;
}

Code:
#define BOBCATPOD_H

class bobcatPod
{
      private:
              //Declare a structure for the list
              struct SongNode
      {
             Song s;                  //value in this node
             SongNode *next;      //To point to the next node
      };
      SongNode *head;
      
      public:
             //Constructor
             bobcatPod()
                {head = NULL;}
                
             //Destructor
             ~bobcatPod();
             
             //Linked list operations
             void appendNode (Song s);
             int addSong (Song s);
             int removeSong (Song s);
             void showSongList ();
             int getTotalMemory();
             int getRemainingMemory();
};
#endif
Code:
#include "song.h"
#include "bobcatPod.h"
void bobcatPod::appendNode (Song num)
{
     SongNode *newNode;   //to point to a new node
     SongNode *nodePtr;   //to move through the list
     //allocate a new node and stor num there.
     newNode = new SongNode;
     newNode->s = num;
     newNode->next = NULL;
     
     //if there are no nodes in the list
     //make newNode the first node
     if (!head)
         head = newNode;
     else     //otherwise, insert newNOde at end
     {
              //initialize nodePtr to head of list
              nodePtr = head;
              
              //find the last node in the list
              while (nodePtr->next)
                 nodePtr = nodePtr->next;
                 
              //insert newNode as the last node.
              nodePtr->next = newNode;
     }
}


int bobcatPod::addSong(Song s)
{
     Song *newSong;     //a new node
     Song *nodePrt;     //to traverse the list
     Song *previousSong = NULL;       //The previous node
     
     // Allocate a new node and stor num there.
     newSong = new Song;
     
     newSong->next = NULL;
     
     
     //If ther are no nodes in the list
     //make newSong the first node
     if (!head)
     {
               head = newSong;
               newSong -> next = NULL;
     }
     else      //Otherwise, insert newSong
     {
               //Position nodePtr at the head of list.
               nodePtr = head;
               //Initialize prefiousSong to NULL.
               previousSong = NULL
               
               //skip all nodes whose value is less than num.
               while (nodePtr != NULL && nodePtr ->value <num)
               {
                     previousSong = nodePtr;
                     nodePtr = nodePtr->next;
               }
               //If the new Song is to be the 1s in the list,
               //insert it before all other nodes.
               if (previousSong ==NULL)
               {
                                head = newSong;
                                newSong ->next = nodePtr;
               }
               else             //Otherwise insert after the previous node.
               {
                                previousSong->next = newSong;
                                newSong-> next = nodePrt;
               }
     }
}
The driver and song files work, but there is something wrong with bobpod files.